void isInterrupted(final Store store, final StoreFile.Writer writer) throws IOException {
   if (store.getHRegion().areWritesEnabled()) return;
   // Else cleanup.
   writer.close();
   store.getFileSystem().delete(writer.getPath(), false);
   throw new InterruptedIOException(
       "Aborting compaction of store "
           + store
           + " in region "
           + store.getHRegion()
           + " because user requested stop.");
 }
예제 #2
0
  private static StripeCompactor createCompactor(StoreFileWritersCapture writers, KeyValue[] input)
      throws Exception {
    Configuration conf = HBaseConfiguration.create();
    final Scanner scanner = new Scanner(input);

    // Create store mock that is satisfactory for compactor.
    HColumnDescriptor col = new HColumnDescriptor(NAME_OF_THINGS);
    ScanInfo si = new ScanInfo(col, Long.MAX_VALUE, 0, CellComparator.COMPARATOR);
    Store store = mock(Store.class);
    when(store.getFamily()).thenReturn(col);
    when(store.getScanInfo()).thenReturn(si);
    when(store.areWritesEnabled()).thenReturn(true);
    when(store.getFileSystem()).thenReturn(mock(FileSystem.class));
    when(store.getRegionInfo()).thenReturn(new HRegionInfo(TABLE_NAME));
    when(store.createWriterInTmp(
            anyLong(), any(Compression.Algorithm.class), anyBoolean(), anyBoolean(), anyBoolean()))
        .thenAnswer(writers);
    when(store.getComparator()).thenReturn(CellComparator.COMPARATOR);

    return new StripeCompactor(conf, store) {
      @Override
      protected InternalScanner createScanner(
          Store store,
          List<StoreFileScanner> scanners,
          long smallestReadPoint,
          long earliestPutTs,
          byte[] dropDeletesFromRow,
          byte[] dropDeletesToRow)
          throws IOException {
        return scanner;
      }

      @Override
      protected InternalScanner createScanner(
          Store store,
          List<StoreFileScanner> scanners,
          ScanType scanType,
          long smallestReadPoint,
          long earliestPutTs)
          throws IOException {
        return scanner;
      }
    };
  }