DL-151: TestBKLogReadHandler#testGetFirstDLSNWithOpenLedger is flaky
- Flush/Commit records only after the data are written
- Disable immediate flush
- Reduce num writes from 100 to 10
Author: Sijie Guo <sijieg@twitter.com>
Reviewers: Leigh Stewart <lstewart@apache.org>
Closes #84 from sijie/sijie/FixTestGetFirstDLSNWithOpenLedger
diff --git a/distributedlog-core/src/test/java/com/twitter/distributedlog/TestBKLogReadHandler.java b/distributedlog-core/src/test/java/com/twitter/distributedlog/TestBKLogReadHandler.java
index 51d0552..48c07ed 100644
--- a/distributedlog-core/src/test/java/com/twitter/distributedlog/TestBKLogReadHandler.java
+++ b/distributedlog-core/src/test/java/com/twitter/distributedlog/TestBKLogReadHandler.java
@@ -164,10 +164,10 @@
DistributedLogConfiguration confLocal = new DistributedLogConfiguration();
confLocal.loadConf(conf);
- confLocal.setImmediateFlushEnabled(true);
+ confLocal.setImmediateFlushEnabled(false);
confLocal.setOutputBufferSize(0);
- int numEntriesPerSegment = 100;
+ int numEntriesPerSegment = 10;
DistributedLogManager dlm1 = createNewDLM(confLocal, dlName);
long txid = 1;
@@ -177,15 +177,14 @@
futures.add(out.write(DLMTestUtil.getLogRecordInstance(txid)));
++txid;
}
- for (Future<DLSN> future : futures) {
- Await.result(future);
- }
-
- BKLogReadHandler readHandler =
- ((BKDistributedLogManager) dlm1).createReadHandler();
+ FutureUtils.result(Future.collect(futures));
+ // commit
+ LogRecord controlRecord = new LogRecord(txid, DistributedLogConstants.CONTROL_RECORD_CONTENT);
+ controlRecord.setControl();
+ FutureUtils.result(out.write(controlRecord));
DLSN last = dlm1.getLastDLSN();
- assertEquals(new DLSN(1,99,0), last);
+ assertEquals(new DLSN(1,9,0), last);
DLSN first = Await.result(dlm1.getFirstDLSNAsync());
assertEquals(new DLSN(1,0,0), first);
Utils.close(out);