@Override
  public void validateCurrentSnapshot(TableDesc tableDesc) {
    if (conf.getBoolean(ConfigProperties.LOCK_HIVE_ENABLED, TableProperties.HIVE_LOCK_ENABLED_DEFAULT) ||
        !HiveConf.getBoolVar(conf, ConfVars.HIVE_TXN_EXT_LOCKING_ENABLED)) {
      return;
    }
    Table table = IcebergTableUtil.getTable(conf, tableDesc.getProperties());
    if (table.currentSnapshot() != null || table instanceof BaseTable) {
      TableMetadata currentMetadata = ((BaseTable) table).operations().current();
      if (currentMetadata.propertyAsBoolean(TableProperties.HIVE_LOCK_ENABLED, false)) {
        return;
      }
      TableMetadata newMetadata = ((BaseTable) table).operations().refresh();
      ValidationException.check(
          Objects.equals(newMetadata.metadataFileLocation(), currentMetadata.metadataFileLocation()),
          "Table snapshot is outdated: %s", tableDesc.getTableName()
      );
    }
  }
Stores the serializable table data in the configuration.
Currently the following is handled:
<ul>
  <li>- Table - in case the table is serializable</li>
  <li>- Location</li>
  <li>- Schema</li>
  <li>- Partition specification</li>
  <li>- FileIO for handling table files</li>
  <li>- Location provider used for file generation</li>
  <li>- Encryption manager for encryption handling</li>
</ul>
@param configuration The configuration storing the catalog information
@param tableDesc The table which we want to store to the configuration
@param map The map of the configuration properties which we append with the serialized data
iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergStorageHandler.java