This is an automated email from the ASF dual-hosted git repository. dimas pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/polaris.git
The following commit(s) were added to refs/heads/main by this push: new 3d354f883 Remove PolarisCallContext from TreeMapMetaStore (#2195) 3d354f883 is described below commit 3d354f883f56d810594e8b2c07a6ce543451765b Author: Christopher Lambert <xn...@gmx.de> AuthorDate: Wed Jul 30 23:37:54 2025 +0200 Remove PolarisCallContext from TreeMapMetaStore (#2195) * remove PolarisCallContext from TreeMapMetaStore methods * reset diagnosticServices in TreeMapMetaStore * simplify ensure methods --- .../transactional/TreeMapMetaStore.java | 61 +++++++++------------- .../TreeMapTransactionalPersistenceImpl.java | 8 +-- 2 files changed, 28 insertions(+), 41 deletions(-) diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapMetaStore.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapMetaStore.java index 7716b1ad1..81a0823e4 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapMetaStore.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapMetaStore.java @@ -25,7 +25,6 @@ import java.util.TreeMap; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; import java.util.function.Supplier; -import org.apache.polaris.core.PolarisCallContext; import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.entity.PolarisBaseEntity; import org.apache.polaris.core.entity.PolarisEntityCore; @@ -69,7 +68,7 @@ public class TreeMapMetaStore { * @param key key for that value */ public T read(String key) { - TreeMapMetaStore.this.ensureReadTr(); + ensureReadTr(); T value = this.slice.getOrDefault(key, null); return (value != null) ? this.copyRecord.apply(value) : null; } @@ -80,7 +79,7 @@ public class TreeMapMetaStore { * @param prefix key prefix */ public List<T> readRange(String prefix) { - TreeMapMetaStore.this.ensureReadTr(); + ensureReadTr(); if (prefix.isEmpty()) { return new ArrayList<>(this.slice.values()); } @@ -100,7 +99,7 @@ public class TreeMapMetaStore { * @param value value to write */ public void write(T value) { - TreeMapMetaStore.this.ensureReadWriteTr(); + ensureReadWriteTr(); T valueToWrite = (value != null) ? this.copyRecord.apply(value) : null; String key = this.buildKey(valueToWrite); // write undo if needs be @@ -116,7 +115,7 @@ public class TreeMapMetaStore { * @param key key for the record to remove */ public void delete(String key) { - TreeMapMetaStore.this.ensureReadWriteTr(); + ensureReadWriteTr(); if (slice.containsKey(key)) { // write undo if needs be if (!this.undoSlice.containsKey(key)) { @@ -132,7 +131,7 @@ public class TreeMapMetaStore { * @param prefix key prefix for the record to remove */ public void deleteRange(String prefix) { - TreeMapMetaStore.this.ensureReadWriteTr(); + ensureReadWriteTr(); List<T> elements = this.readRange(prefix); for (T element : elements) { this.delete(element); @@ -140,7 +139,7 @@ public class TreeMapMetaStore { } void deleteAll() { - TreeMapMetaStore.this.ensureReadWriteTr(); + ensureReadWriteTr(); slice.clear(); undoSlice.clear(); } @@ -156,7 +155,7 @@ public class TreeMapMetaStore { /** Rollback all changes made to this slice since transaction started */ private void rollback() { - TreeMapMetaStore.this.ensureReadWriteTr(); + ensureReadWriteTr(); undoSlice.forEach( (key, value) -> { if (value == null) { @@ -194,6 +193,7 @@ public class TreeMapMetaStore { private Transaction tr; // diagnostic services + private final PolarisDiagnostics initialDiagnosticServices; private PolarisDiagnostics diagnosticServices; // all entities @@ -301,6 +301,7 @@ public class TreeMapMetaStore { policyMappingRecord.getTargetId()), PolarisPolicyMappingRecord::new); + this.initialDiagnosticServices = diagnostics; // no transaction open yet this.diagnosticServices = diagnostics; this.tr = null; @@ -397,7 +398,7 @@ public class TreeMapMetaStore { } /** Ensure that a read/write FDB transaction has been started */ - public void ensureReadWriteTr() { + private void ensureReadWriteTr() { this.diagnosticServices.check( this.tr != null && this.tr.isWrite(), "no_write_transaction_started"); } @@ -410,18 +411,16 @@ public class TreeMapMetaStore { /** * Run inside a read/write transaction * - * @param callCtx call context to use - * @param transactionCode transaction code * @return the result of the execution */ public <T> T runInTransaction( - @Nonnull PolarisCallContext callCtx, @Nonnull Supplier<T> transactionCode) { + @Nonnull PolarisDiagnostics diagnostics, @Nonnull Supplier<T> transactionCode) { synchronized (lock) { // execute transaction try { // init diagnostic services - this.diagnosticServices = callCtx.getDiagServices(); + this.diagnosticServices = diagnostics; this.startWriteTransaction(); return transactionCode.get(); } catch (Throwable e) { @@ -431,26 +430,21 @@ public class TreeMapMetaStore { throw e; } finally { this.tr = null; - this.diagnosticServices = null; + this.diagnosticServices = this.initialDiagnosticServices; } } } - /** - * Run inside a read/write transaction - * - * @param callCtx call context to use - * @param transactionCode transaction code - */ + /** Run inside a read/write transaction */ public void runActionInTransaction( - @Nonnull PolarisCallContext callCtx, @Nonnull Runnable transactionCode) { + @Nonnull PolarisDiagnostics diagnostics, @Nonnull Runnable transactionCode) { synchronized (lock) { // execute transaction try { // init diagnostic services - this.diagnosticServices = callCtx.getDiagServices(); + this.diagnosticServices = diagnostics; this.startWriteTransaction(); transactionCode.run(); } catch (Throwable e) { @@ -460,7 +454,7 @@ public class TreeMapMetaStore { throw e; } finally { this.tr = null; - this.diagnosticServices = null; + this.diagnosticServices = this.initialDiagnosticServices; } } } @@ -468,46 +462,39 @@ public class TreeMapMetaStore { /** * Run inside a read only transaction * - * @param callCtx call context to use - * @param transactionCode transaction code * @return the result of the execution */ public <T> T runInReadTransaction( - @Nonnull PolarisCallContext callCtx, @Nonnull Supplier<T> transactionCode) { + @Nonnull PolarisDiagnostics diagnostics, @Nonnull Supplier<T> transactionCode) { synchronized (lock) { // execute transaction try { // init diagnostic services - this.diagnosticServices = callCtx.getDiagServices(); + this.diagnosticServices = diagnostics; this.startReadTransaction(); return transactionCode.get(); } finally { this.tr = null; - this.diagnosticServices = null; + this.diagnosticServices = this.initialDiagnosticServices; } } } - /** - * Run inside a read only transaction - * - * @param callCtx call context to use - * @param transactionCode transaction code - */ + /** Run inside a read only transaction */ public void runActionInReadTransaction( - @Nonnull PolarisCallContext callCtx, @Nonnull Runnable transactionCode) { + @Nonnull PolarisDiagnostics diagnostics, @Nonnull Runnable transactionCode) { synchronized (lock) { // execute transaction try { // init diagnostic services - this.diagnosticServices = callCtx.getDiagServices(); + this.diagnosticServices = diagnostics; this.startReadTransaction(); transactionCode.run(); } finally { this.tr = null; - this.diagnosticServices = null; + this.diagnosticServices = this.initialDiagnosticServices; } } } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapTransactionalPersistenceImpl.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapTransactionalPersistenceImpl.java index 5ce0866c3..6ebb18e8c 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapTransactionalPersistenceImpl.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TreeMapTransactionalPersistenceImpl.java @@ -79,7 +79,7 @@ public class TreeMapTransactionalPersistenceImpl extends AbstractTransactionalPe @Nonnull PolarisCallContext callCtx, @Nonnull Supplier<T> transactionCode) { // run transaction on our underlying store - return store.runInTransaction(callCtx, transactionCode); + return store.runInTransaction(callCtx.getDiagServices(), transactionCode); } /** {@inheritDoc} */ @@ -88,7 +88,7 @@ public class TreeMapTransactionalPersistenceImpl extends AbstractTransactionalPe @Nonnull PolarisCallContext callCtx, @Nonnull Runnable transactionCode) { // run transaction on our underlying store - store.runActionInTransaction(callCtx, transactionCode); + store.runActionInTransaction(callCtx.getDiagServices(), transactionCode); } /** {@inheritDoc} */ @@ -96,7 +96,7 @@ public class TreeMapTransactionalPersistenceImpl extends AbstractTransactionalPe public <T> T runInReadTransaction( @Nonnull PolarisCallContext callCtx, @Nonnull Supplier<T> transactionCode) { // run transaction on our underlying store - return store.runInReadTransaction(callCtx, transactionCode); + return store.runInReadTransaction(callCtx.getDiagServices(), transactionCode); } /** {@inheritDoc} */ @@ -105,7 +105,7 @@ public class TreeMapTransactionalPersistenceImpl extends AbstractTransactionalPe @Nonnull PolarisCallContext callCtx, @Nonnull Runnable transactionCode) { // run transaction on our underlying store - store.runActionInReadTransaction(callCtx, transactionCode); + store.runActionInReadTransaction(callCtx.getDiagServices(), transactionCode); } /**