public void visit()

in src/main/java/org/apache/accumulo/testing/randomwalk/shard/CompactFilter.java [46:98]


  public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
    String indexTableName = state.getString("indexTableName");
    String docTableName = state.getString("docTableName");
    Random rand = state.getRandom();

    String deleteChar = Integer.toHexString(rand.nextInt(16)) + "";
    String regex = "^[0-9a-f][" + deleteChar + "].*";

    ArrayList<IteratorSetting> documentFilters = new ArrayList<>();

    IteratorSetting is = new IteratorSetting(21, "ii", RegExFilter.class);
    RegExFilter.setRegexs(is, regex, null, null, null, false);
    RegExFilter.setNegate(is, true);
    documentFilters.add(is);

    long t1 = System.currentTimeMillis();
    env.getAccumuloClient().tableOperations().compact(docTableName, null, null, documentFilters,
        true, true);
    long t2 = System.currentTimeMillis();
    long t3 = t2 - t1;

    ArrayList<IteratorSetting> indexFilters = new ArrayList<>();

    is = new IteratorSetting(21, RegExFilter.class);
    RegExFilter.setRegexs(is, null, null, regex, null, false);
    RegExFilter.setNegate(is, true);
    indexFilters.add(is);

    t1 = System.currentTimeMillis();
    env.getAccumuloClient().tableOperations().compact(indexTableName, null, null, indexFilters,
        true, true);
    t2 = System.currentTimeMillis();

    log.debug(
        "Filtered documents using compaction iterators " + regex + " " + (t3) + " " + (t2 - t1));

    try (BatchScanner bscanner = env.getAccumuloClient().createBatchScanner(docTableName,
        new Authorizations(), 10)) {

      List<Range> ranges = new ArrayList<>();
      for (int i = 0; i < 16; i++) {
        ranges.add(Range.prefix(new Text(Integer.toHexString(i) + "" + deleteChar)));
      }

      bscanner.setRanges(ranges);
      Iterator<Entry<Key,Value>> iter = bscanner.iterator();

      if (iter.hasNext()) {
        throw new Exception("Saw unexpected document " + iter.next().getKey());
      }

    }
  }