Skip to content

Commit 13bdf80

Browse files
refactor
1 parent c07be61 commit 13bdf80

File tree

7 files changed

+29
-11
lines changed

7 files changed

+29
-11
lines changed

persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreSessionImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -756,7 +756,8 @@ public PolarisPrincipalSecrets resetPrincipalSecrets(
756756
@Nonnull String clientId,
757757
long principalId,
758758
String customClientId,
759-
String customClientSecret) {
759+
String customClientSecret,
760+
boolean customReset) {
760761
throw new UnsupportedOperationException(
761762
"This method is not supported for EclipseLink as metastore");
762763
}

persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcBasePersistenceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -780,7 +780,8 @@ public PolarisPrincipalSecrets resetPrincipalSecrets(
780780
@Nonnull String clientId,
781781
long principalId,
782782
String customClientId,
783-
String customClientSecret) {
783+
String customClientSecret,
784+
boolean customReset) {
784785
PolarisPrincipalSecrets principalSecrets = loadPrincipalSecrets(callCtx, clientId);
785786

786787
// should be found
@@ -803,7 +804,7 @@ public PolarisPrincipalSecrets resetPrincipalSecrets(
803804
principalId,
804805
principalSecrets.getPrincipalId());
805806

806-
if (customClientId != null && customClientSecret != null) {
807+
if (customReset) {
807808
principalSecrets =
808809
new PolarisPrincipalSecrets(
809810
principalSecrets.getPrincipalId(), customClientId, customClientSecret, null);

polaris-core/src/main/java/org/apache/polaris/core/entity/PolarisPrincipalSecrets.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class PolarisPrincipalSecrets {
3636
private final long principalId;
3737

3838
// the client id for that principal
39-
private String principalClientId;
39+
private final String principalClientId;
4040

4141
// the main secret hash for that principal
4242
private String mainSecret;

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -916,14 +916,20 @@ private void revokeGrantRecord(
916916
PolarisObjectMapperUtil.deserializeProperties(
917917
principal.getInternalProperties() == null ? "{}" : principal.getInternalProperties());
918918

919+
boolean customReset = customClientId != null && customClientSecret != null;
919920
PolarisPrincipalSecrets secrets =
920921
((IntegrationPersistence) ms)
921922
.resetPrincipalSecrets(
922-
callCtx, clientId, principalId, customClientId, customClientSecret);
923+
callCtx, clientId, principalId, customClientId, customClientSecret, customReset);
923924

924925
PolarisBaseEntity.Builder principalBuilder = new PolarisBaseEntity.Builder(principal);
925926
principalBuilder.internalProperties(PolarisObjectMapperUtil.serializeProperties(internalProps));
926-
principalBuilder.entityVersion(principal.getEntityVersion() + 1);
927+
// To avoid incrementing entity version twice
928+
if (customReset) {
929+
principalBuilder.entityVersion(principal.getEntityVersion());
930+
} else {
931+
principalBuilder.entityVersion(principal.getEntityVersion() + 1);
932+
}
927933
ms.writeEntity(callCtx, principalBuilder.build(), true, principal);
928934
return (secrets == null)
929935
? new PrincipalSecretsResult(BaseResult.ReturnStatus.ENTITY_NOT_FOUND, null)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,16 @@ PolarisPrincipalSecrets rotatePrincipalSecrets(
9090
* @param principalId principal id
9191
* @param customClientId the principal secret's old main secret hash
9292
* @param customClientSecret the principal secret's old main secret hash
93+
* @param customReset
9394
*/
9495
@Nullable
9596
PolarisPrincipalSecrets resetPrincipalSecrets(
9697
@Nonnull PolarisCallContext callCtx,
9798
@Nonnull String clientId,
9899
long principalId,
99100
String customClientId,
100-
String customClientSecret);
101+
String customClientSecret,
102+
boolean customReset);
101103

102104
/**
103105
* When dropping a principal, we also need to drop the secrets of that principal

polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -942,11 +942,18 @@ private void bootstrapPolarisService(
942942
PolarisObjectMapperUtil.deserializeProperties(
943943
principal.getInternalProperties() == null ? "{}" : principal.getInternalProperties());
944944

945+
boolean customReset = customClientId != null && customClientSecret != null;
946+
945947
PolarisPrincipalSecrets secrets =
946948
ms.resetPrincipalSecrets(
947-
callCtx, clientId, principalId, customClientId, customClientSecret);
949+
callCtx, clientId, principalId, customClientId, customClientSecret, customReset);
948950
principalBuilder.internalProperties(PolarisObjectMapperUtil.serializeProperties(internalProps));
949-
principalBuilder.entityVersion(principal.getEntityVersion() + 1);
951+
// To avoid incrementing entity version twice
952+
if (customReset) {
953+
principalBuilder.entityVersion(principal.getEntityVersion());
954+
} else {
955+
principalBuilder.entityVersion(principal.getEntityVersion() + 1);
956+
}
950957
ms.writeEntityInCurrentTxn(callCtx, principalBuilder.build(), true, principal);
951958
return secrets;
952959
}

polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapTransactionalPersistenceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,8 @@ public int lookupEntityGrantRecordsVersionInCurrentTxn(
500500
@Nonnull String clientId,
501501
long principalId,
502502
String customClientId,
503-
String customClientSecret) {
503+
String customClientSecret,
504+
boolean customReset) {
504505
PolarisPrincipalSecrets principalSecrets = this.store.getSlicePrincipalSecrets().read(clientId);
505506

506507
// should be found
@@ -524,7 +525,7 @@ public int lookupEntityGrantRecordsVersionInCurrentTxn(
524525
principalSecrets.getPrincipalId());
525526

526527
// reset the secrets
527-
if (customClientId != null && customClientSecret != null) {
528+
if (customReset) {
528529
principalSecrets =
529530
new PolarisPrincipalSecrets(
530531
principalSecrets.getPrincipalId(), customClientId, customClientSecret, null);

0 commit comments

Comments
 (0)