Skip to content

Commit 67ab108

Browse files
committed
Use FileIOFactory to get the creds for cleanup task
1 parent 2cb4552 commit 67ab108

File tree

2 files changed

+20
-40
lines changed

2 files changed

+20
-40
lines changed

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/BasePolarisCatalogTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,10 +1391,7 @@ public void testDropTableWithPurge() {
13911391
.containsEntry(PolarisCredentialProperty.AWS_KEY_ID, TEST_ACCESS_KEY)
13921392
.containsEntry(PolarisCredentialProperty.AWS_SECRET_KEY, SECRET_ACCESS_KEY)
13931393
.containsEntry(PolarisCredentialProperty.AWS_TOKEN, SESSION_TOKEN);
1394-
FileIO fileIO =
1395-
new TaskFileIOSupplier(
1396-
createMockMetaStoreManagerFactory(), fileIOFactory, configurationStore)
1397-
.apply(taskEntity, realmId);
1394+
FileIO fileIO = new TaskFileIOSupplier(fileIOFactory).apply(taskEntity, realmId);
13981395
Assertions.assertThat(fileIO).isNotNull().isInstanceOf(InMemoryFileIO.class);
13991396
}
14001397

service/common/src/main/java/org/apache/polaris/service/task/TaskFileIOSupplier.java

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,68 +21,51 @@
2121
import jakarta.enterprise.context.ApplicationScoped;
2222
import jakarta.inject.Inject;
2323
import java.util.HashMap;
24+
import java.util.List;
2425
import java.util.Map;
2526
import java.util.Set;
2627
import java.util.function.BiFunction;
2728
import org.apache.iceberg.CatalogProperties;
29+
import org.apache.iceberg.catalog.TableIdentifier;
2830
import org.apache.iceberg.io.FileIO;
29-
import org.apache.polaris.core.PolarisConfiguration;
30-
import org.apache.polaris.core.PolarisConfigurationStore;
3131
import org.apache.polaris.core.context.RealmId;
3232
import org.apache.polaris.core.entity.PolarisTaskConstants;
33+
import org.apache.polaris.core.entity.TableLikeEntity;
3334
import org.apache.polaris.core.entity.TaskEntity;
34-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
35-
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
36-
import org.apache.polaris.core.persistence.PolarisMetaStoreSession;
35+
import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper;
36+
import org.apache.polaris.core.persistence.ResolvedPolarisEntity;
37+
import org.apache.polaris.core.storage.PolarisStorageActions;
3738
import org.apache.polaris.service.catalog.io.FileIOFactory;
3839

3940
@ApplicationScoped
4041
public class TaskFileIOSupplier implements BiFunction<TaskEntity, RealmId, FileIO> {
41-
private final MetaStoreManagerFactory metaStoreManagerFactory;
4242
private final FileIOFactory fileIOFactory;
43-
private final PolarisConfigurationStore configurationStore;
4443

4544
@Inject
46-
public TaskFileIOSupplier(
47-
MetaStoreManagerFactory metaStoreManagerFactory,
48-
FileIOFactory fileIOFactory,
49-
PolarisConfigurationStore configurationStore) {
50-
this.metaStoreManagerFactory = metaStoreManagerFactory;
45+
public TaskFileIOSupplier(FileIOFactory fileIOFactory) {
5146
this.fileIOFactory = fileIOFactory;
52-
this.configurationStore = configurationStore;
5347
}
5448

5549
@Override
5650
public FileIO apply(TaskEntity task, RealmId realmId) {
5751
Map<String, String> internalProperties = task.getInternalPropertiesAsMap();
58-
String location = internalProperties.get(PolarisTaskConstants.STORAGE_LOCATION);
59-
PolarisMetaStoreManager metaStoreManager =
60-
metaStoreManagerFactory.getOrCreateMetaStoreManager(realmId);
61-
PolarisMetaStoreSession metaStoreSession =
62-
metaStoreManagerFactory.getOrCreateSessionSupplier(realmId).get();
6352
Map<String, String> properties = new HashMap<>(internalProperties);
6453

65-
Boolean skipCredentialSubscopingIndirection =
66-
configurationStore.getConfiguration(
67-
realmId,
68-
PolarisConfiguration.SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION.key,
69-
PolarisConfiguration.SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION.defaultValue);
54+
TableLikeEntity tableEntity = TableLikeEntity.of(task);
55+
TableIdentifier identifier = tableEntity.getTableIdentifier();
56+
String location = properties.get(PolarisTaskConstants.STORAGE_LOCATION);
57+
Set<String> locations = Set.of(location);
58+
Set<PolarisStorageActions> storageActions = Set.of(PolarisStorageActions.ALL);
59+
ResolvedPolarisEntity resolvedTaskEntity =
60+
new ResolvedPolarisEntity(task, List.of(), List.of());
61+
PolarisResolvedPathWrapper resolvedPath =
62+
new PolarisResolvedPathWrapper(List.of(resolvedTaskEntity));
7063

71-
if (!skipCredentialSubscopingIndirection) {
72-
properties.putAll(
73-
metaStoreManagerFactory
74-
.getOrCreateStorageCredentialCache(realmId)
75-
.getOrGenerateSubScopeCreds(
76-
metaStoreManager,
77-
metaStoreSession,
78-
task,
79-
true,
80-
Set.of(location),
81-
Set.of(location)));
82-
}
8364
String ioImpl =
8465
properties.getOrDefault(
8566
CatalogProperties.FILE_IO_IMPL, "org.apache.iceberg.io.ResolvingFileIO");
86-
return fileIOFactory.loadFileIO(realmId, ioImpl, properties);
67+
68+
return fileIOFactory.loadFileIO(
69+
realmId, ioImpl, properties, identifier, locations, storageActions, resolvedPath);
8770
}
8871
}

0 commit comments

Comments
 (0)