docs: private VoltTable checkSnapshotFeasibility(String file_path, String file_nonce, JSONObject data, SnapshotFormat format)
      {
          VoltTable result = SnapshotUtil.constructNodeResultsTable();
          SNAP_LOG.trace("Checking feasibility of save with path and nonce: " + file_path + ", " + file_nonce);
  
          // Check if a snapshot is already in progress
          if (SnapshotSiteProcessor.isSnapshotInProgress()) {
              result.addRow(m_messenger.getHostId(), m_messenger.getHostname(), "", "FAILURE", "SNAPSHOT IN PROGRESS");
              return result;
          }
  
          SnapshotRequestConfig config = null;
          try {
              config = new SnapshotRequestConfig(data, VoltDB.instance().getCatalogContext().database);
          } catch (IllegalArgumentException e) {
              // if we get exception here, it means table specified in snapshot doesn't exist in database.
              result.addRow(m_messenger.getHostId(), m_messenger.getHostname(), "", "FAILURE", e.getMessage());
              return result;
          }
  
          // Check if the snapshot file can be created successfully.
          if (format.isFileBased()) {
              // Check snapshot directory no matter table exists or not. If not, try to create the directory.
              File parent = SnapshotUtil.constructFileForTable(new Table(), file_path, file_nonce, format, m_messenger.getHostId()).getParentFile();
              if (!parent.exists() && !parent.mkdirs()) {
                  result.addRow(m_messenger.getHostId(), m_messenger.getHostname(), "", "FAILURE",
                          "FILE LOCATION UNWRITABLE: failed to create parent directory " + parent.getPath());
                  return result;
              }
              if (!parent.isDirectory() || !parent.canRead() || !parent.canWrite() || !parent.canExecute()) {
                  result.addRow(m_messenger.getHostId(), m_messenger.getHostname(), "", "FAILURE",
                          "FILE LOCATION UNWRITABLE: " + parent);
                  return result;
              }
  
              boolean sameNonceSnapshotExist = false;
              Map<Table, String> tableToErrorMsg = new HashMap<>();
              for (Table table : SnapshotUtil.getTablesToSave(VoltDB.instance().getCatalogContext().database)) {
                  String errMsg = null;
                  File saveFilePath =
                          SnapshotUtil.constructFileForTable(table, file_path, file_nonce, format, m_messenger.getHostId());
                  SNAP_LOG.trace("Host ID " + m_messenger.getHostId() +
                                 " table: " + table.getTypeName() +
                                 " to path: " + saveFilePath);
                  if (saveFilePath.exists()) {
                      sameNonceSnapshotExist = true;
                      //snapshot with same nonce exists, there is no need to check for other tables.
                      break;
                  }
                  try {
                      /*
                       * Sanity check that the file can be created
                       * and then delete it so empty files aren't
                       * orphaned if another part of the snapshot
                       * test fails.
                       */
                      if (saveFilePath.createNewFile()) {
                          saveFilePath.delete();
                      }
                  } catch (IOException ex) {
                      errMsg = "FILE CREATION OF " + saveFilePath +
                                 " RESULTED IN IOException: " + CoreUtils.throwableToString(ex);
                  }
                  if (errMsg != null) {
                      tableToErrorMsg.put(table, errMsg);
                  }
              }
  
              // Add error message only for tables included in current snapshot.
              // If there exist any previous snapshot with same nonce, add sameNonceErrorMsg for each table,
              // or add corresponding error message otherwise.
              final String sameNonceErrorMsg = "SNAPSHOT FILE WITH SAME NONCE ALREADY EXISTS";
              for (Table table : config.tables) {
                  if (sameNonceSnapshotExist) {
                      result.addRow(m_messenger.getHostId(), m_messenger.getHostname(), table.getTypeName(), "FAILURE", sameNonceErrorMsg);
                  } else if (tableToErrorMsg.containsKey(table)) {
                      result.addRow(m_messenger.getHostId(), m_messenger.getHostname(), table.getTypeName(), "FAILURE", tableToErrorMsg.get(table));
                  }
              }
          }
          return result;
      }