docs: protected String verifyAndWriteCatalogJar(CatalogChangeResult ccr)
      {
          String procedureName = "@VerifyCatalogAndWriteJar";
  
          CompletableFuture<Map<Integer,ClientResponse>> cf =
                  callNTProcedureOnAllHosts(procedureName, ccr.catalogBytes, ccr.encodedDiffCommands,
                          ccr.catalogHash, ccr.deploymentBytes);
  
          Map<Integer, ClientResponse> resultMapByHost = null;
          String err;
  
          long timeoutSeconds = VerifyCatalogAndWriteJar.TIMEOUT;
          hostLog.info("Max timeout setting for VerifyCatalogAndWriteJar is " + timeoutSeconds + " seconds");
  
          try {
              Stopwatch sw = Stopwatch.createStarted();
              long elapsed = 0;
              while ((elapsed = sw.elapsed(TimeUnit.SECONDS)) < (timeoutSeconds)) {
                  resultMapByHost = cf.getNow(null);
                  if (resultMapByHost != null) {
                      sw.stop();
                      break;
                  }
  
                  if (elapsed < 5) {
                      // do not log under 5 seconds and sleep for 100 milliseconds
                      Thread.sleep(100);
                      continue;
                  }
                  hostLog.info(elapsed + " seconds has elapsed but " + procedureName + " is still wait for remote response."
                          + "The max timeout value is " + timeoutSeconds + " seconds.");
                  Thread.sleep(TimeUnit.SECONDS.toMillis(5));
              }
          } catch (Exception e) {
              err = procedureName + " run everywhere call failed: " + e.getMessage();
              hostLog.info(err + ", " + com.google_voltpatches.common.base.Throwables.getStackTraceAsString(e));
              return err;
          }
  
          if (resultMapByHost == null) {
              err = "An invocation of procedure " + procedureName + " on all hosts timed out.";
              hostLog.info(err);
              return err;
          }
  
          for (Entry<Integer, ClientResponse> entry : resultMapByHost.entrySet()) {
              if (entry.getValue().getStatus() != ClientResponseImpl.SUCCESS) {
                  err = "The response from host " + entry.getKey().toString() +
                        " for " + procedureName + " returned failures: " + entry.getValue().getStatusString();
                  compilerLog.info(err);
  
                  // hide the internal NT-procedure @VerifyCatalogAndWriteJar from the client message
                  return err;
              }
          }
  
          return null;
      }