Yi Wu
4bd3bc5c4f
BlobDB: Fix VisibleToActiveSnapshot() ( #4236 )
...
Summary:
There are two issues with `VisibleToActiveSnapshot`:
1. If there are no snapshots, `oldest_snapshot` will be 0 and `VisibleToActiveSnapshot` will always return true. Since the method is used to decide whether it is safe to delete obsolete files, obsolete file won't be able to delete in this case.
2. The `auto` keyword of `auto snapshots = db_impl_->snapshots()` translate to a copy of `const SnapshotList` instead of a reference. Since copy constructor of `SnapshotList` is not defined, using the copy may yield unexpected result.
Issue 2 actually hide issue 1 from being catch by tests. During test `snapshots.empty()` can return false while it should actually be empty, and `snapshots.oldest()` return an invalid address, making `oldest_snapshot` being some random large number.
The issue was originally reported by BlobDB early adopter at Kuaishou.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/4236
Differential Revision: D9188706
Pulled By: yiwu-arbug
fbshipit-source-id: a0f2624b927cf9bf28c1bb534784fee5d106f5ea
2018-08-24 14:38:20 -07:00
..
2018-08-11 21:47:27 -07:00
2018-05-21 14:43:11 -07:00
2018-04-12 17:59:16 -07:00
2018-06-27 17:42:38 -07:00
2018-07-13 17:27:39 -07:00
2018-05-03 15:43:09 -07:00
2018-04-27 11:57:39 -07:00
2018-07-13 17:27:39 -07:00
2018-05-21 14:43:11 -07:00
2018-03-05 13:13:41 -08:00
2017-08-19 14:10:08 -07:00
2018-06-21 21:28:05 -07:00
2018-07-12 14:42:39 -07:00
2018-06-21 21:28:05 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2018-08-24 13:47:06 -07:00
2018-06-28 12:34:40 -07:00
2018-05-29 15:44:34 -07:00
2018-06-27 17:42:38 -07:00
2018-05-29 15:44:34 -07:00
2018-07-05 20:12:56 -07:00
2018-06-27 17:42:38 -07:00
2018-06-27 17:42:38 -07:00
2018-06-27 17:42:38 -07:00
2018-07-13 17:27:39 -07:00
2018-06-27 17:13:34 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2017-10-17 08:57:09 -07:00
2018-05-24 15:57:33 -07:00
2018-06-27 20:42:43 -07:00
2018-05-30 16:15:16 -07:00
2018-07-16 14:27:53 -07:00
2018-04-15 17:26:26 -07:00
2017-07-15 16:11:23 -07:00
2018-03-21 22:13:34 -07:00
2018-05-03 15:43:09 -07:00
2018-06-28 12:34:40 -07:00
2018-06-28 12:34:40 -07:00
2017-10-05 18:11:43 -07:00
2018-07-11 14:57:46 -07:00
2018-06-28 18:58:29 -07:00
2018-05-21 14:43:11 -07:00
2018-03-15 11:58:12 -07:00
2018-06-28 12:34:40 -07:00
2018-08-16 16:43:30 -07:00
2018-07-06 17:59:13 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2017-07-26 21:11:47 -07:00
2018-05-21 14:43:11 -07:00
2018-06-12 16:57:36 -07:00
2018-07-12 14:42:39 -07:00
2018-05-21 14:43:11 -07:00
2018-07-25 17:25:26 -07:00
2018-04-15 17:26:26 -07:00
2018-03-05 13:13:41 -08:00
2018-06-27 12:23:07 -07:00
2018-05-21 16:42:22 -07:00
2018-06-26 20:27:35 -07:00
2018-07-13 22:43:09 -07:00
2018-04-12 17:59:16 -07:00
2017-07-15 16:11:23 -07:00
2017-09-28 18:17:30 -07:00
2018-07-17 14:43:18 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 22:43:09 -07:00
2018-07-13 17:27:39 -07:00
2018-07-19 17:30:09 -07:00
2018-05-03 15:43:09 -07:00
2018-05-14 21:13:35 -07:00
2018-07-13 17:42:38 -07:00
2018-04-13 11:27:17 -07:00
2018-07-16 17:13:10 -07:00
2018-07-13 17:27:39 -07:00
2018-06-28 12:34:40 -07:00
2018-06-28 12:34:40 -07:00
2018-06-28 12:34:40 -07:00
2018-04-12 17:59:16 -07:00
2017-07-15 16:11:23 -07:00
2018-04-12 17:59:16 -07:00
2018-07-13 22:43:09 -07:00
2018-07-13 22:43:09 -07:00
2018-07-13 22:43:09 -07:00
2018-07-17 14:13:16 -07:00
2018-07-13 17:27:39 -07:00
2018-03-05 13:13:41 -08:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2018-07-13 17:27:39 -07:00
2018-06-28 12:34:40 -07:00
2018-05-03 15:43:09 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:42:38 -07:00
2018-03-05 13:13:41 -08:00
2018-06-15 17:28:01 -07:00
2018-06-15 17:28:01 -07:00
2018-05-09 10:13:53 -07:00
2018-04-10 15:59:24 -07:00
2017-07-15 16:11:23 -07:00
2018-07-13 10:58:06 -07:00
2018-01-29 12:56:42 -08:00
2018-06-21 08:42:24 -07:00
2018-05-14 10:57:56 -07:00
2018-05-14 10:57:56 -07:00
2018-05-03 15:43:09 -07:00
2018-05-03 15:43:09 -07:00
2018-03-06 16:27:54 -08:00
2017-07-15 16:11:23 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2018-06-28 12:34:39 -07:00
2018-05-03 15:43:09 -07:00
2018-08-21 17:57:45 -07:00
2018-03-23 12:14:30 -07:00
2018-08-21 17:57:45 -07:00
2017-07-15 16:11:23 -07:00
2018-07-12 14:42:39 -07:00
2018-02-09 14:57:54 -08:00
2017-07-15 16:11:23 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:27:39 -07:00
2017-07-15 16:11:23 -07:00
2018-07-13 17:27:39 -07:00
2018-04-05 11:12:16 -07:00
2018-07-13 17:27:39 -07:00
2018-07-13 17:42:38 -07:00
2018-08-21 17:19:17 -07:00
2018-07-13 22:43:09 -07:00
2018-06-27 12:23:07 -07:00
2018-04-15 17:26:26 -07:00
2018-07-13 17:42:38 -07:00
2018-03-05 13:13:41 -08:00
2017-07-15 16:11:23 -07:00
2018-08-24 14:38:20 -07:00
2018-07-13 17:42:38 -07:00
2018-07-13 17:42:38 -07:00
2018-06-15 19:26:58 -07:00
2018-03-05 13:13:41 -08:00
2018-03-05 13:13:41 -08:00
2018-07-06 17:59:13 -07:00
2017-11-10 17:28:12 -08:00
2017-07-15 16:11:23 -07:00
2018-06-15 12:42:53 -07:00
2018-05-21 14:43:11 -07:00
2018-05-03 15:43:09 -07:00
2018-05-23 16:12:59 -07:00
2018-07-12 14:42:39 -07:00
2018-07-13 17:42:38 -07:00
2018-07-24 09:44:14 -07:00
2018-07-16 14:27:53 -07:00
2018-07-13 17:27:39 -07:00
2018-06-21 08:42:24 -07:00
2018-01-11 18:57:33 -08:00
2017-07-15 16:11:23 -07:00
2018-06-28 18:58:29 -07:00
2018-07-06 17:59:13 -07:00
2018-07-13 10:58:06 -07:00
2018-07-13 17:27:39 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2017-07-15 16:11:23 -07:00
2018-07-18 10:18:50 -07:00
2018-07-18 10:18:50 -07:00