Andres Noetzli e853191c17 Fix DBTest.ApproximateMemoryUsage
Summary:
This patch fixes two issues in DBTest.ApproximateMemoryUsage:
- It was possible that a flush happened between getting the two properties in
  Phase 1, resulting in different numbers for the properties and failing the
  assertion. This is fixed by waiting for the flush to finish before getting
  the properties.
- There was a similar issue in Phase 2 and additionally there was an issue that
  rocksdb.size-all-mem-tables was not monotonically increasing because it was
  possible that a flush happened just after getting the properties and then
  another flush just before getting the properties in the next round. In this
  situation, the reported memory usage decreased. This is fixed by forcing a
  flush before getting the properties.

Note: during testing, I found that kFlushesPerRound does not seem very
accurate. I added a TODO for this and it would be great to get some input on
what to do there.

Test Plan:
The first issue can be made more likely to trigger by inserting a
`usleep(10000);` between the calls to GetIntProperty() in Phase 1.
The second issue can be made more likely to trigger by inserting a
`if (r != 0) usleep(10000);` before the calls to GetIntProperty() and a
`usleep(10000);` after the calls.
Then execute make db_test && ./db_test --gtest_filter=DBTest.ApproximateMemoryUsage

Reviewers: rven, yhchiang, igor, sdong, anthony

Reviewed By: anthony

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D45675
2015-08-27 16:17:08 -07:00
..
2015-08-24 11:11:12 -07:00
2015-08-24 11:11:12 -07:00
2015-07-17 18:59:11 +02:00
2015-07-17 12:02:52 -07:00
2015-08-05 07:33:27 -07:00
2015-07-20 17:20:40 -07:00
2015-08-25 12:29:44 -07:00
2015-08-25 12:29:44 -07:00
2015-08-11 17:52:23 -07:00
2015-08-27 16:17:08 -07:00
2015-07-20 17:20:40 -07:00
2015-04-23 12:10:36 -07:00
2015-03-17 14:08:00 -07:00
2015-08-24 11:11:12 -07:00
2015-08-24 11:11:12 -07:00
2015-01-26 11:48:07 -08:00
2015-07-07 12:10:10 -07:00
2015-08-05 07:33:27 -07:00
2015-08-05 07:33:27 -07:00
2015-08-17 17:34:38 -07:00
2015-03-30 16:05:35 -04:00
2015-08-24 11:11:12 -07:00
2015-03-17 14:08:00 -07:00
2015-08-11 11:25:22 -07:00
2015-08-06 17:59:05 -07:00
2015-07-20 17:20:40 -07:00
2014-11-10 17:39:38 -05:00
2015-07-29 16:54:23 -07:00
2015-07-29 16:54:23 -07:00
2015-08-06 17:59:05 -07:00
2015-05-29 14:36:35 -07:00