public void checkpointer()
{
int iteration = 0;
while (checkpoint_interval != 0) {
try {
if (db.workingSegment.RowCount > checkpoint_interval) {
DateTime start = DateTime.Now;
iteration++;
System.Console.WriteLine("checkpoint {0} start ", iteration);
db.flushWorkingSegment();
if (this.withMerge) {
db.mergeIfNeeded();
}
// db.DEBUG_addNewWorkingSegmentWithoutFlush();
double duration_ms = (DateTime.Now - start).TotalMilliseconds;
System.Console.WriteLine("checkpoint {0} end in {1} ms", iteration, duration_ms);
Thread.Sleep(5);
} else {
Thread.Sleep(5);
}
} catch (Exception e) {
System.Console.WriteLine("EXCEPTION in checkpointer -- " + e.ToString());
exceptions++;
}
}
}