public CommitLogSegment.CommitLogContext getContext() {
   Callable<CommitLogSegment.CommitLogContext> task =
       new Callable<CommitLogSegment.CommitLogContext>() {
         public CommitLogSegment.CommitLogContext call() throws Exception {
           return currentSegment().getContext();
         }
       };
   try {
     return executor.submit(task).get();
   } catch (InterruptedException e) {
     throw new RuntimeException(e);
   } catch (ExecutionException e) {
     throw new RuntimeException(e);
   }
 }
 /*
  * This is called on Memtable flush to add to the commit log
  * a token indicating that this column family has been flushed.
  * The bit flag associated with this column family is set in the
  * header and this is used to decide if the log file can be deleted.
  */
 public void discardCompletedSegments(
     final Integer cfId, final CommitLogSegment.CommitLogContext context) throws IOException {
   Callable task =
       new Callable() {
         public Object call() throws IOException {
           discardCompletedSegmentsInternal(context, cfId);
           return null;
         }
       };
   try {
     executor.submit(task).get();
   } catch (InterruptedException e) {
     throw new RuntimeException(e);
   } catch (ExecutionException e) {
     throw new RuntimeException(e);
   }
 }
 /*
  * Adds the specified row to the commit log. This method will reset the
  * file offset to what it is before the start of the operation in case
  * of any problems. This way we can assume that the subsequent commit log
  * entry will override the garbage left over by the previous write.
  */
 public void add(RowMutation rowMutation, Object serializedRow) throws IOException {
   executor.add(new LogRecordAdder(rowMutation, serializedRow));
 }
Esempio n. 4
0
 public void shutdownBlocking() throws InterruptedException {
   executor.shutdown();
   executor.awaitTermination();
 }