Levi Tamasi
f2228962c5
Fix a data race related to DB properties ( #8206 )
...
Summary:
Historically, the DB properties `rocksdb.cur-size-active-mem-table`,
`rocksdb.cur-size-all-mem-tables`, and `rocksdb.size-all-mem-tables` called
the method `MemTable::ApproximateMemoryUsage` for mutable memtables,
which is not safe without synchronization. This resulted in data races with
memtable inserts. The patch changes the code handling these properties
to use `MemTable::ApproximateMemoryUsageFast` instead, which returns a
cached value backed by an atomic variable. Two test cases had to be updated
for this change. `MemoryTest.MemTableAndTableReadersTotal` was fixed by
increasing the value size used so each value ends up in its own memtable,
which was the original intention (note: the test has been broken in the sense
that the test code didn't consider that memtable sizes below 64 KB get
increased to 64 KB by `SanitizeOptions`, and has been passing only by
accident). `DBTest.MemoryUsageWithMaxWriteBufferSizeToMaintain` relies on
completely up-to-date values and thus was changed to use `ApproximateMemoryUsage`
directly instead of going through the DB properties. Note: this should be safe in this case
since there's only a single thread involved.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/8206
Test Plan: `make check`
Reviewed By: riversand963
Differential Revision: D27866811
Pulled By: ltamasi
fbshipit-source-id: 7bd754d0565e0a65f1f7f0e78ffc093beef79394
2021-04-20 10:17:49 -07:00
..
2021-04-15 09:45:02 -07:00
2021-03-29 17:10:42 -07:00
2021-04-19 20:29:21 -07:00
2020-12-04 21:29:38 -08:00
2020-12-04 21:29:38 -08:00
2021-03-25 15:00:45 -07:00
2021-03-25 15:00:45 -07:00
2021-04-16 05:56:00 -07:00
2021-04-16 05:56:00 -07:00
2021-01-15 16:56:41 -08:00
2021-04-14 12:05:47 -07:00
2021-03-25 21:18:08 -07:00
2021-03-29 17:10:42 -07:00
2020-10-28 23:22:27 -07:00
2020-05-12 18:23:33 -07:00
2021-02-22 22:09:22 -08:00
2021-02-06 22:34:30 -08:00
2021-01-06 10:49:32 -08:00
2020-12-09 21:21:16 -08:00
2021-04-14 12:05:47 -07:00
2021-01-06 14:15:02 -08:00
2021-03-17 20:44:49 -07:00
2021-01-25 22:09:11 -08:00
2021-01-09 09:44:34 -08:00
2020-09-10 22:35:25 -07:00
2021-03-30 18:35:20 -07:00
2021-01-19 13:47:48 -08:00
2020-06-15 10:47:02 -07:00
2020-08-17 18:42:25 -07:00
2021-01-06 14:15:02 -08:00
2020-12-04 21:29:38 -08:00
2020-12-22 23:45:58 -08:00
2021-03-25 21:18:08 -07:00
2021-03-25 21:18:08 -07:00
2021-03-12 12:31:29 -08:00
2021-01-29 12:18:58 -08:00
2021-01-25 22:09:11 -08:00
2020-12-09 21:21:16 -08:00
2021-01-29 12:18:58 -08:00
2020-12-08 15:55:04 -08:00
2020-12-08 15:55:04 -08:00
2021-02-19 10:29:02 -08:00
2021-04-14 12:05:47 -07:00
2021-04-01 05:08:17 -07:00
2021-03-15 15:03:27 -07:00
2021-04-15 20:18:57 -07:00
2020-12-22 23:45:58 -08:00
2020-12-22 23:45:58 -08:00
2021-01-06 14:15:02 -08:00
2021-04-19 20:29:21 -07:00
2021-04-19 20:29:21 -07:00
2021-04-19 20:29:21 -07:00
2021-04-20 10:17:49 -07:00
2021-02-06 22:34:30 -08:00
2021-04-07 23:18:37 -07:00
2021-03-15 17:44:52 -07:00
2020-08-17 18:42:25 -07:00
2020-12-22 15:09:39 -08:00
2020-10-28 23:22:27 -07:00
2020-12-02 13:00:53 -08:00
2021-03-25 21:18:08 -07:00
2020-12-22 15:09:39 -08:00
2021-03-30 21:44:44 -07:00
2021-03-17 22:38:13 -07:00
2021-03-25 21:18:08 -07:00
2021-03-31 18:21:50 -07:00
2020-08-25 10:46:11 -07:00
2020-02-20 12:09:57 -08:00
2020-12-09 21:21:16 -08:00
2021-03-31 19:13:10 -07:00
2021-03-15 04:34:11 -07:00
2021-03-25 22:08:58 -07:00
2020-12-22 23:45:58 -08:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2020-10-28 23:22:27 -07:00
2021-02-23 14:35:06 -08:00
2021-04-07 23:18:37 -07:00
2021-03-17 20:44:49 -07:00
2020-02-20 12:09:57 -08:00
2021-03-19 12:09:47 -07:00
2020-02-20 12:09:57 -08:00
2021-03-25 21:18:08 -07:00
2020-04-15 17:40:44 -07:00
2021-01-25 22:09:11 -08:00
2021-03-15 04:34:11 -07:00
2020-12-23 16:55:53 -08:00
2021-04-20 10:17:49 -07:00
2021-03-15 04:34:11 -07:00
2020-05-04 15:08:13 -07:00
2021-01-29 12:18:58 -08:00
2020-12-22 23:45:58 -08:00
2020-02-20 12:09:57 -08:00
2020-11-30 18:11:38 -08:00
2020-08-26 10:39:20 -07:00
2021-01-04 16:01:01 -08:00
2020-12-23 16:55:53 -08:00
2021-03-19 12:09:47 -07:00
2020-02-20 12:09:57 -08:00
2021-03-19 12:09:47 -07:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2020-12-22 23:45:58 -08:00
2021-02-06 22:34:30 -08:00
2021-03-25 21:18:08 -07:00
2020-12-14 13:48:22 -08:00
2021-03-15 04:34:11 -07:00
2021-03-25 21:18:08 -07:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2021-03-15 04:34:11 -07:00
2021-03-15 04:34:11 -07:00
2020-02-20 12:09:57 -08:00
2021-01-21 13:13:02 -08:00
2021-03-12 16:44:35 -08:00
2020-12-23 16:55:53 -08:00
2020-11-10 23:42:13 -08:00
2020-11-10 23:42:13 -08:00
2021-03-15 04:34:11 -07:00
2021-01-25 22:09:11 -08:00
2021-03-15 04:34:11 -07:00
2021-01-25 22:09:11 -08:00
2020-02-20 12:09:57 -08:00
2021-01-04 16:01:01 -08:00
2020-02-20 12:09:57 -08:00
2021-03-15 04:34:11 -07:00
2021-03-15 04:34:11 -07:00
2020-02-20 12:09:57 -08:00
2020-10-28 10:12:58 -07:00
2021-03-25 21:18:08 -07:00
2020-02-20 12:09:57 -08:00
2021-03-19 12:09:47 -07:00
2020-02-20 12:09:57 -08:00
2020-08-14 19:20:58 -07:00
2021-03-17 20:44:49 -07:00
2021-03-25 15:00:45 -07:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2021-03-25 21:18:08 -07:00
2021-03-15 04:34:11 -07:00
2021-03-25 21:18:08 -07:00
2021-03-25 15:00:45 -07:00
2021-03-25 15:00:45 -07:00
2021-03-25 15:00:45 -07:00
2020-12-22 23:45:58 -08:00
2020-08-12 17:31:23 -07:00
2020-02-20 12:09:57 -08:00
2020-02-20 12:09:57 -08:00
2020-10-28 23:22:27 -07:00
2020-12-14 14:07:52 -08:00
2020-06-09 16:51:23 -07:00
2021-03-10 10:59:44 -08:00
2021-03-10 10:59:44 -08:00
2021-01-19 19:27:53 -08:00
2021-01-20 20:29:04 -08:00
2021-03-25 21:18:08 -07:00
2021-04-01 11:28:54 -07:00
2021-04-19 20:29:21 -07:00
2021-03-15 04:34:11 -07:00
2020-12-09 16:02:12 -08:00
2020-12-09 16:02:12 -08:00
2020-12-09 16:02:12 -08:00
2021-03-15 04:34:11 -07:00
2021-03-15 04:34:11 -07:00
2020-08-12 17:31:23 -07:00
2020-02-20 12:09:57 -08:00
2021-01-29 12:18:58 -08:00
2020-12-08 15:55:04 -08:00
2021-03-15 04:34:11 -07:00
2020-12-22 23:45:58 -08:00
2020-02-20 12:09:57 -08:00
2021-03-18 09:47:31 -07:00
2021-03-18 09:47:31 -07:00
2021-03-18 09:47:31 -07:00
2021-01-29 12:18:58 -08:00
2021-03-19 12:09:47 -07:00