Fix DBFlushTest::FireOnFlushCompletedAfterCommittedResult hang (#6018)
Summary: The test would fire two flushes to let them run in parallel. Previously it wait for the first job to be scheduled before firing the second. It is possible the job is not started before the second job being scheduled, making the two job combine into one. Change to wait for the first job being started. Fixes https://github.com/facebook/rocksdb/issues/6017 Pull Request resolved: https://github.com/facebook/rocksdb/pull/6018 Test Plan: ``` while ./db_flush_test --gtest_filter=*FireOnFlushCompletedAfterCommittedResult*; do :; done ``` and let it run for a while. Signed-off-by: Yi Wu <yiwu@pingcap.com> Differential Revision: D18405576 Pulled By: riversand963 fbshipit-source-id: 6ebb6262e033d5dc2ef81cb3eb410b314f2de4c9
This commit is contained in:
parent
f80050fa8f
commit
72de842ac9
@ -370,7 +370,7 @@ TEST_F(DBFlushTest, FireOnFlushCompletedAfterCommittedResult) {
|
|||||||
std::shared_ptr<TestListener> listener = std::make_shared<TestListener>();
|
std::shared_ptr<TestListener> listener = std::make_shared<TestListener>();
|
||||||
|
|
||||||
SyncPoint::GetInstance()->LoadDependency(
|
SyncPoint::GetInstance()->LoadDependency(
|
||||||
{{"DBImpl::FlushMemTable:AfterScheduleFlush",
|
{{"DBImpl::BackgroundCallFlush:start",
|
||||||
"DBFlushTest::FireOnFlushCompletedAfterCommittedResult:WaitFirst"},
|
"DBFlushTest::FireOnFlushCompletedAfterCommittedResult:WaitFirst"},
|
||||||
{"DBImpl::FlushMemTableToOutputFile:Finish",
|
{"DBImpl::FlushMemTableToOutputFile:Finish",
|
||||||
"DBFlushTest::FireOnFlushCompletedAfterCommittedResult:WaitSecond"}});
|
"DBFlushTest::FireOnFlushCompletedAfterCommittedResult:WaitSecond"}});
|
||||||
@ -401,7 +401,7 @@ TEST_F(DBFlushTest, FireOnFlushCompletedAfterCommittedResult) {
|
|||||||
// flush_opts.wait = true
|
// flush_opts.wait = true
|
||||||
ASSERT_OK(db_->Flush(FlushOptions()));
|
ASSERT_OK(db_->Flush(FlushOptions()));
|
||||||
});
|
});
|
||||||
// Wait for first flush scheduled.
|
// Wait for first flush started.
|
||||||
TEST_SYNC_POINT(
|
TEST_SYNC_POINT(
|
||||||
"DBFlushTest::FireOnFlushCompletedAfterCommittedResult:WaitFirst");
|
"DBFlushTest::FireOnFlushCompletedAfterCommittedResult:WaitFirst");
|
||||||
// The second flush will exit early without commit its result. The work
|
// The second flush will exit early without commit its result. The work
|
||||||
|
Loading…
Reference in New Issue
Block a user