private ThreadStart CheckpointThread(AtomicBoolean endSignal, AtomicReference <Exception> readerError, AtomicBoolean failHalt) { return(() => { while (!endSignal.get()) { try { _index.checkpoint(IOLimiter.UNLIMITED); // Sleep a little in between checkpoints MILLISECONDS.sleep(20L); } catch (Exception e) { readerError.set(e); failHalt.set(true); } } }); }