Skip to content

Commit dc23a1c

Browse files
authored
Add PolarisDiagnostics field to TransactionWorkspaceMetaStoreManager (#2359)
the ultimate goal is removing the `PolarisCallContext` parameter from every `PolarisMetaStoreManager` interface method, so we make steps towards reducing its usage first.
1 parent 7f50667 commit dc23a1c

File tree

3 files changed

+45
-85
lines changed

3 files changed

+45
-85
lines changed

polaris-core/src/main/java/org/apache/polaris/core/persistence/TransactionWorkspaceMetaStoreManager.java

Lines changed: 38 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.Optional;
2828
import java.util.Set;
2929
import org.apache.polaris.core.PolarisCallContext;
30+
import org.apache.polaris.core.PolarisDiagnostics;
3031
import org.apache.polaris.core.entity.LocationBasedEntity;
3132
import org.apache.polaris.core.entity.PolarisBaseEntity;
3233
import org.apache.polaris.core.entity.PolarisEntity;
@@ -72,6 +73,7 @@
7273
* be reused between requests.
7374
*/
7475
public class TransactionWorkspaceMetaStoreManager implements PolarisMetaStoreManager {
76+
private final PolarisDiagnostics diagnostics;
7577
private final PolarisMetaStoreManager delegate;
7678

7779
// TODO: If we want to support the semantic of opening a transaction in which multiple
@@ -83,7 +85,9 @@ public class TransactionWorkspaceMetaStoreManager implements PolarisMetaStoreMan
8385
// pendingUpdates that ultimately need to be applied in order within the real MetaStoreManager.
8486
private final List<EntityWithPath> pendingUpdates = new ArrayList<>();
8587

86-
public TransactionWorkspaceMetaStoreManager(PolarisMetaStoreManager delegate) {
88+
public TransactionWorkspaceMetaStoreManager(
89+
PolarisDiagnostics diagnostics, PolarisMetaStoreManager delegate) {
90+
this.diagnostics = diagnostics;
8791
this.delegate = delegate;
8892
}
8993

@@ -93,15 +97,13 @@ public List<EntityWithPath> getPendingUpdates() {
9397

9498
@Override
9599
public BaseResult bootstrapPolarisService(@Nonnull PolarisCallContext callCtx) {
96-
callCtx
97-
.getDiagServices()
98-
.fail("illegal_method_in_transaction_workspace", "bootstrapPolarisService");
100+
diagnostics.fail("illegal_method_in_transaction_workspace", "bootstrapPolarisService");
99101
return null;
100102
}
101103

102104
@Override
103105
public BaseResult purge(@Nonnull PolarisCallContext callCtx) {
104-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "purge");
106+
diagnostics.fail("illegal_method_in_transaction_workspace", "purge");
105107
return null;
106108
}
107109

@@ -112,7 +114,7 @@ public EntityResult readEntityByName(
112114
@Nonnull PolarisEntityType entityType,
113115
@Nonnull PolarisEntitySubType entitySubType,
114116
@Nonnull String name) {
115-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "readEntityByName");
117+
diagnostics.fail("illegal_method_in_transaction_workspace", "readEntityByName");
116118
return null;
117119
}
118120

@@ -123,31 +125,27 @@ public ListEntitiesResult listEntities(
123125
@Nonnull PolarisEntityType entityType,
124126
@Nonnull PolarisEntitySubType entitySubType,
125127
@Nonnull PageToken pageToken) {
126-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "listEntities");
128+
diagnostics.fail("illegal_method_in_transaction_workspace", "listEntities");
127129
return null;
128130
}
129131

130132
@Override
131133
public GenerateEntityIdResult generateNewEntityId(@Nonnull PolarisCallContext callCtx) {
132-
callCtx
133-
.getDiagServices()
134-
.fail("illegal_method_in_transaction_workspace", "generateNewEntityId");
134+
diagnostics.fail("illegal_method_in_transaction_workspace", "generateNewEntityId");
135135
return null;
136136
}
137137

138138
@Override
139139
public CreatePrincipalResult createPrincipal(
140140
@Nonnull PolarisCallContext callCtx, @Nonnull PolarisBaseEntity principal) {
141-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "createPrincipal");
141+
diagnostics.fail("illegal_method_in_transaction_workspace", "createPrincipal");
142142
return null;
143143
}
144144

145145
@Override
146146
public PrincipalSecretsResult loadPrincipalSecrets(
147147
@Nonnull PolarisCallContext callCtx, @Nonnull String clientId) {
148-
callCtx
149-
.getDiagServices()
150-
.fail("illegal_method_in_transaction_workspace", "loadPrincipalSecrets");
148+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadPrincipalSecrets");
151149
return null;
152150
}
153151

@@ -158,9 +156,7 @@ public PrincipalSecretsResult rotatePrincipalSecrets(
158156
long principalId,
159157
boolean reset,
160158
@Nonnull String oldSecretHash) {
161-
callCtx
162-
.getDiagServices()
163-
.fail("illegal_method_in_transaction_workspace", "rotatePrincipalSecrets");
159+
diagnostics.fail("illegal_method_in_transaction_workspace", "rotatePrincipalSecrets");
164160
return null;
165161
}
166162

@@ -169,7 +165,7 @@ public CreateCatalogResult createCatalog(
169165
@Nonnull PolarisCallContext callCtx,
170166
@Nonnull PolarisBaseEntity catalog,
171167
@Nonnull List<PolarisEntityCore> principalRoles) {
172-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "createCatalog");
168+
diagnostics.fail("illegal_method_in_transaction_workspace", "createCatalog");
173169
return null;
174170
}
175171

@@ -178,9 +174,7 @@ public EntityResult createEntityIfNotExists(
178174
@Nonnull PolarisCallContext callCtx,
179175
@Nullable List<PolarisEntityCore> catalogPath,
180176
@Nonnull PolarisBaseEntity entity) {
181-
callCtx
182-
.getDiagServices()
183-
.fail("illegal_method_in_transaction_workspace", "createEntityIfNotExists");
177+
diagnostics.fail("illegal_method_in_transaction_workspace", "createEntityIfNotExists");
184178
return null;
185179
}
186180

@@ -189,9 +183,7 @@ public EntitiesResult createEntitiesIfNotExist(
189183
@Nonnull PolarisCallContext callCtx,
190184
@Nullable List<PolarisEntityCore> catalogPath,
191185
@Nonnull List<? extends PolarisBaseEntity> entities) {
192-
callCtx
193-
.getDiagServices()
194-
.fail("illegal_method_in_transaction_workspace", "createEntitiesIfNotExist");
186+
diagnostics.fail("illegal_method_in_transaction_workspace", "createEntitiesIfNotExist");
195187
return null;
196188
}
197189

@@ -207,9 +199,8 @@ public EntityResult updateEntityPropertiesIfNotChanged(
207199
@Override
208200
public EntitiesResult updateEntitiesPropertiesIfNotChanged(
209201
@Nonnull PolarisCallContext callCtx, @Nonnull List<EntityWithPath> entities) {
210-
callCtx
211-
.getDiagServices()
212-
.fail("illegal_method_in_transaction_workspace", "updateEntitiesPropertiesIfNotChanged");
202+
diagnostics.fail(
203+
"illegal_method_in_transaction_workspace", "updateEntitiesPropertiesIfNotChanged");
213204
return null;
214205
}
215206

@@ -220,7 +211,7 @@ public EntityResult renameEntity(
220211
@Nonnull PolarisBaseEntity entityToRename,
221212
@Nullable List<PolarisEntityCore> newCatalogPath,
222213
@Nonnull PolarisEntity renamedEntity) {
223-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "renameEntity");
214+
diagnostics.fail("illegal_method_in_transaction_workspace", "renameEntity");
224215
return null;
225216
}
226217

@@ -231,7 +222,7 @@ public DropEntityResult dropEntityIfExists(
231222
@Nonnull PolarisBaseEntity entityToDrop,
232223
@Nullable Map<String, String> cleanupProperties,
233224
boolean cleanup) {
234-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "dropEntityIfExists");
225+
diagnostics.fail("illegal_method_in_transaction_workspace", "dropEntityIfExists");
235226
return null;
236227
}
237228

@@ -241,9 +232,7 @@ public PrivilegeResult grantUsageOnRoleToGrantee(
241232
@Nullable PolarisEntityCore catalog,
242233
@Nonnull PolarisEntityCore role,
243234
@Nonnull PolarisEntityCore grantee) {
244-
callCtx
245-
.getDiagServices()
246-
.fail("illegal_method_in_transaction_workspace", "grantUsageOnRoleToGrantee");
235+
diagnostics.fail("illegal_method_in_transaction_workspace", "grantUsageOnRoleToGrantee");
247236
return null;
248237
}
249238

@@ -253,9 +242,7 @@ public PrivilegeResult revokeUsageOnRoleFromGrantee(
253242
@Nullable PolarisEntityCore catalog,
254243
@Nonnull PolarisEntityCore role,
255244
@Nonnull PolarisEntityCore grantee) {
256-
callCtx
257-
.getDiagServices()
258-
.fail("illegal_method_in_transaction_workspace", "revokeUsageOnRoleFromGrantee");
245+
diagnostics.fail("illegal_method_in_transaction_workspace", "revokeUsageOnRoleFromGrantee");
259246
return null;
260247
}
261248

@@ -266,9 +253,7 @@ public PrivilegeResult grantPrivilegeOnSecurableToRole(
266253
@Nullable List<PolarisEntityCore> catalogPath,
267254
@Nonnull PolarisEntityCore securable,
268255
@Nonnull PolarisPrivilege privilege) {
269-
callCtx
270-
.getDiagServices()
271-
.fail("illegal_method_in_transaction_workspace", "grantPrivilegeOnSecurableToRole");
256+
diagnostics.fail("illegal_method_in_transaction_workspace", "grantPrivilegeOnSecurableToRole");
272257
return null;
273258
}
274259

@@ -279,36 +264,29 @@ public PrivilegeResult revokePrivilegeOnSecurableFromRole(
279264
@Nullable List<PolarisEntityCore> catalogPath,
280265
@Nonnull PolarisEntityCore securable,
281266
@Nonnull PolarisPrivilege privilege) {
282-
callCtx
283-
.getDiagServices()
284-
.fail("illegal_method_in_transaction_workspace", "revokePrivilegeOnSecurableFromRole");
267+
diagnostics.fail(
268+
"illegal_method_in_transaction_workspace", "revokePrivilegeOnSecurableFromRole");
285269
return null;
286270
}
287271

288272
@Override
289273
public @Nonnull LoadGrantsResult loadGrantsOnSecurable(
290274
@Nonnull PolarisCallContext callCtx, PolarisEntityCore securable) {
291-
callCtx
292-
.getDiagServices()
293-
.fail("illegal_method_in_transaction_workspace", "loadGrantsOnSecurable");
275+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadGrantsOnSecurable");
294276
return null;
295277
}
296278

297279
@Override
298280
public @Nonnull LoadGrantsResult loadGrantsToGrantee(
299281
@Nonnull PolarisCallContext callCtx, PolarisEntityCore grantee) {
300-
callCtx
301-
.getDiagServices()
302-
.fail("illegal_method_in_transaction_workspace", "loadGrantsToGrantee");
282+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadGrantsToGrantee");
303283
return null;
304284
}
305285

306286
@Override
307287
public ChangeTrackingResult loadEntitiesChangeTracking(
308288
@Nonnull PolarisCallContext callCtx, @Nonnull List<PolarisEntityId> entityIds) {
309-
callCtx
310-
.getDiagServices()
311-
.fail("illegal_method_in_transaction_workspace", "loadEntitiesChangeTracking");
289+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadEntitiesChangeTracking");
312290
return null;
313291
}
314292

@@ -318,14 +296,14 @@ public EntityResult loadEntity(
318296
long entityCatalogId,
319297
long entityId,
320298
PolarisEntityType entityType) {
321-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "loadEntity");
299+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadEntity");
322300
return null;
323301
}
324302

325303
@Override
326304
public EntitiesResult loadTasks(
327305
@Nonnull PolarisCallContext callCtx, String executorId, PageToken pageToken) {
328-
callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "loadTasks");
306+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadTasks");
329307
return null;
330308
}
331309

@@ -354,9 +332,7 @@ public ResolvedEntityResult loadResolvedEntityById(
354332
long entityCatalogId,
355333
long entityId,
356334
PolarisEntityType entityType) {
357-
callCtx
358-
.getDiagServices()
359-
.fail("illegal_method_in_transaction_workspace", "loadResolvedEntityById");
335+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadResolvedEntityById");
360336
return null;
361337
}
362338

@@ -367,9 +343,7 @@ public ResolvedEntityResult loadResolvedEntityByName(
367343
long parentId,
368344
@Nonnull PolarisEntityType entityType,
369345
@Nonnull String entityName) {
370-
callCtx
371-
.getDiagServices()
372-
.fail("illegal_method_in_transaction_workspace", "loadResolvedEntityByName");
346+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadResolvedEntityByName");
373347
return null;
374348
}
375349

@@ -381,9 +355,7 @@ public ResolvedEntityResult refreshResolvedEntity(
381355
@Nonnull PolarisEntityType entityType,
382356
long entityCatalogId,
383357
long entityId) {
384-
callCtx
385-
.getDiagServices()
386-
.fail("illegal_method_in_transaction_workspace", "refreshResolvedEntity");
358+
diagnostics.fail("illegal_method_in_transaction_workspace", "refreshResolvedEntity");
387359
return null;
388360
}
389361

@@ -392,9 +364,7 @@ public ResolvedEntityResult refreshResolvedEntity(
392364
public <T extends PolarisEntity & LocationBasedEntity>
393365
Optional<Optional<String>> hasOverlappingSiblings(
394366
@Nonnull PolarisCallContext callContext, T entity) {
395-
callContext
396-
.getDiagServices()
397-
.fail("illegal_method_in_transaction_workspace", "hasOverlappingSiblings");
367+
diagnostics.fail("illegal_method_in_transaction_workspace", "hasOverlappingSiblings");
398368
return Optional.empty();
399369
}
400370

@@ -406,9 +376,7 @@ Optional<Optional<String>> hasOverlappingSiblings(
406376
@Nonnull List<PolarisEntityCore> policyCatalogPath,
407377
@Nonnull PolicyEntity policy,
408378
Map<String, String> parameters) {
409-
callCtx
410-
.getDiagServices()
411-
.fail("illegal_method_in_transaction_workspace", "attachPolicyToEntity");
379+
diagnostics.fail("illegal_method_in_transaction_workspace", "attachPolicyToEntity");
412380
return null;
413381
}
414382

@@ -419,18 +387,14 @@ Optional<Optional<String>> hasOverlappingSiblings(
419387
@Nonnull PolarisEntityCore target,
420388
@Nonnull List<PolarisEntityCore> policyCatalogPath,
421389
@Nonnull PolicyEntity policy) {
422-
callCtx
423-
.getDiagServices()
424-
.fail("illegal_method_in_transaction_workspace", "detachPolicyFromEntity");
390+
diagnostics.fail("illegal_method_in_transaction_workspace", "detachPolicyFromEntity");
425391
return null;
426392
}
427393

428394
@Override
429395
public @Nonnull LoadPolicyMappingsResult loadPoliciesOnEntity(
430396
@Nonnull PolarisCallContext callCtx, @Nonnull PolarisEntityCore target) {
431-
callCtx
432-
.getDiagServices()
433-
.fail("illegal_method_in_transaction_workspace", "loadPoliciesOnEntity");
397+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadPoliciesOnEntity");
434398
return null;
435399
}
436400

@@ -439,9 +403,7 @@ Optional<Optional<String>> hasOverlappingSiblings(
439403
@Nonnull PolarisCallContext callCtx,
440404
@Nonnull PolarisEntityCore target,
441405
@Nonnull PolicyType policyType) {
442-
callCtx
443-
.getDiagServices()
444-
.fail("illegal_method_in_transaction_workspace", "loadPoliciesOnEntityByType");
406+
diagnostics.fail("illegal_method_in_transaction_workspace", "loadPoliciesOnEntityByType");
445407
return null;
446408
}
447409
}

runtime/service/src/main/java/org/apache/polaris/service/catalog/common/CatalogHandler.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public abstract class CatalogHandler {
5959
protected final String catalogName;
6060
protected final PolarisAuthorizer authorizer;
6161

62+
protected final PolarisDiagnostics diagnostics;
6263
protected final CallContext callContext;
6364
protected final PolarisPrincipal polarisPrincipal;
6465
protected final SecurityContext securityContext;
@@ -70,12 +71,12 @@ public CatalogHandler(
7071
String catalogName,
7172
PolarisAuthorizer authorizer) {
7273
this.callContext = callContext;
74+
this.diagnostics = callContext.getPolarisCallContext().getDiagServices();
7375
this.resolutionManifestFactory = resolutionManifestFactory;
7476
this.catalogName = catalogName;
75-
PolarisDiagnostics diagServices = callContext.getPolarisCallContext().getDiagServices();
76-
diagServices.checkNotNull(securityContext, "null_security_context");
77-
diagServices.checkNotNull(securityContext.getUserPrincipal(), "null_user_principal");
78-
diagServices.check(
77+
diagnostics.checkNotNull(securityContext, "null_security_context");
78+
diagnostics.checkNotNull(securityContext.getUserPrincipal(), "null_user_principal");
79+
diagnostics.check(
7980
securityContext.getUserPrincipal() instanceof PolarisPrincipal,
8081
"invalid_principal_type",
8182
"Principal must be a PolarisPrincipal");

runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -685,10 +685,7 @@ public Optional<LoadTableResponse> loadTableWithAccessDelegationIfStale(
685685
}
686686

687687
PolarisResolvedPathWrapper catalogPath = resolutionManifest.getResolvedReferenceCatalogEntity();
688-
callContext
689-
.getPolarisCallContext()
690-
.getDiagServices()
691-
.checkNotNull(catalogPath, "No catalog available for loadTable request");
688+
diagnostics.checkNotNull(catalogPath, "No catalog available for loadTable request");
692689
CatalogEntity catalogEntity = CatalogEntity.of(catalogPath.getRawLeafEntity());
693690
LOGGER.info("Catalog type: {}", catalogEntity.getCatalogType());
694691
LOGGER.info(
@@ -921,7 +918,7 @@ public void commitTransaction(CommitTransactionRequest commitTransactionRequest)
921918
// only go into an in-memory collection that we can commit as a single atomic unit after all
922919
// validations.
923920
TransactionWorkspaceMetaStoreManager transactionMetaStoreManager =
924-
new TransactionWorkspaceMetaStoreManager(metaStoreManager);
921+
new TransactionWorkspaceMetaStoreManager(diagnostics, metaStoreManager);
925922
((IcebergCatalog) baseCatalog).setMetaStoreManager(transactionMetaStoreManager);
926923

927924
commitTransactionRequest.tableChanges().stream()

0 commit comments

Comments
 (0)