@Override
    public Integer call() throws IOException {
      while (true) {
        if (workersFailed.get()) {
          return EXIT_FAILURE;
        }
        long procId = procIds.getAndIncrement();
        if (procId >= numProcs) {
          break;
        }
        if (procId != 0 && procId % 10000 == 0) {
          long ns = System.nanoTime() - start;
          System.out.println("Wrote " + procId + " procedures in "
            + StringUtils.humanTimeDiff(TimeUnit.NANOSECONDS.toMillis(ns)));
        }
        try {
          preWrite(procId);
        } catch (IOException ioe) {
          // Ask other threads to quit too.
          workersFailed.set(true);
          System.err.println("Exception when rolling log file. Current procId = " + procId);
          ioe.printStackTrace();
          return EXIT_FAILURE;
        }
        ProcedureTestingUtility.TestProcedure proc =
          new ProcedureTestingUtility.TestProcedure(procId);
        proc.setData(SERIALIZED_STATE);
        store.insert(proc, null);
        store.update(proc);
      }
      return EXIT_SUCCESS;
    }
Callable to generate load for wal by inserting/deleting/updating procedures. If procedure store
fails to roll log file (throws IOException), all threads quit, and at least one returns value
of {@link AbstractHBaseTool#EXIT_FAILURE}.
hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/store/ProcedureStorePerformanceEvaluation.java