@Test
  public void testFailCreateTable() throws Exception {
    conf.set(MASTER_COPROCESSOR_CONF_KEY, CreateFailObserver.class.getName());
    TEST_UTIL.startMiniCluster(3);
    try {
      TEST_UTIL.createTable(TABLE, FAMILY);
    } catch (AccessDeniedException e) {
      LOG.debug("Ignoring exception: ", e);
      Thread.sleep(evictionDelay * 3);
    }
    List<Procedure<MasterProcedureEnv>> procedureInfos =
      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterProcedureExecutor().getProcedures();
    for (Procedure procedureInfo : procedureInfos) {
      if (
        procedureInfo.getProcName().equals("CreateTableProcedure")
          && procedureInfo.getState() == ProcedureProtos.ProcedureState.ROLLEDBACK
      ) {
        fail("Found procedure " + procedureInfo + " that hasn't been cleaned up");
      }
    }
  }
Check if CompletedProcedureCleaner cleans up failed nonce procedures.
hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestFailedProcCleanup.java