smaheshwar-pltr commented on code in PR #17404:
URL: https://github.com/apache/iceberg/pull/17404#discussion_r3670123611
##########
hive-metastore/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java:
##########
@@ -203,62 +217,35 @@ the table key parameter (along with existing snapshots)
in the file, making the
throw new RuntimeException("Interrupted during refresh", e);
}
- refreshFromMetadataLocation(metadataLocation, metadataRefreshMaxRetries);
+ // Use plain fileIO, not io(): metadata isn't envelope-encrypted and io()
would re-enter
+ // refresh.
+ refreshFromMetadataLocation(
+ metadataLocation,
+ null,
+ metadataRefreshMaxRetries,
+ location -> TableMetadataParser.read(fileIO, location));
if (tableKeyIdFromHMS != null) {
checkIntegrityForEncryption(tableKeyIdFromHMS, dekLengthFromHMS,
metadataHashFromHMS);
- tableKeyId = tableKeyIdFromHMS;
- encryptionDekLength =
+ // Keys aren't cached here; encryption() rebuilds the manager from
metadata on demand.
+ this.encryptionDekLength =
(dekLengthFromHMS != null)
? Integer.parseInt(dekLengthFromHMS)
: TableProperties.ENCRYPTION_DEK_LENGTH_DEFAULT;
-
- encryptedKeys =
- Optional.ofNullable(current().encryptionKeys())
- .map(Lists::newLinkedList)
- .orElseGet(Lists::newLinkedList);
-
- if (encryptionManager != null) {
- Set<String> keyIdsFromMetadata =
-
encryptedKeys.stream().map(EncryptedKey::keyId).collect(Collectors.toSet());
-
- for (EncryptedKey keyFromEM :
EncryptionUtil.encryptionKeys(encryptionManager).values()) {
- if (!keyIdsFromMetadata.contains(keyFromEM.keyId())) {
- encryptedKeys.add(keyFromEM);
- }
- }
- }
-
- // Force re-creation of encryption manager with updated keys
- encryptingFileIO = null;
- encryptionManager = null;
+ this.tableKeyId = tableKeyIdFromHMS;
}
}
@SuppressWarnings({"checkstyle:CyclomaticComplexity", "MethodLength"})
@Override
protected void doCommit(TableMetadata base, TableMetadata metadata) {
boolean newTable = base == null;
- final TableMetadata tableMetadata;
encryptionPropsFromMetadata(metadata.properties());
- String newMetadataLocation;
- EncryptionManager encrManager = encryption();
- if (encrManager instanceof StandardEncryptionManager) {
- // Add new encryption keys to the metadata
- TableMetadata.Builder builder = TableMetadata.buildFrom(metadata);
- for (Map.Entry<String, EncryptedKey> entry :
- EncryptionUtil.encryptionKeys(encrManager).entrySet()) {
- builder.addEncryptionKey(entry.getValue());
- }
-
- tableMetadata = builder.build();
- } else {
- tableMetadata = metadata;
- }
-
- newMetadataLocation = writeNewMetadataIfRequired(newTable, tableMetadata);
+ // Encryption keys are already persisted into the metadata by
SnapshotProducer.
+ TableMetadata tableMetadata = metadata;
Review Comment:
this is silly both can be tiched
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]