Skip to content

Commit 6835385

Browse files
committed
Address review feedback
1 parent 9bf2972 commit 6835385

File tree

4 files changed

+19
-54
lines changed

4 files changed

+19
-54
lines changed

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

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,15 @@ public void writeEntity(
8787
@Nonnull PolarisBaseEntity entity,
8888
boolean nameOrParentChanged,
8989
PolarisBaseEntity originalEntity) {
90-
persistEntity(callCtx, entity, originalEntity, datasourceOperations);
90+
try {
91+
datasourceOperations.runWithinTransaction(
92+
statement -> {
93+
persistEntity(callCtx, entity, originalEntity, statement);
94+
return true;
95+
});
96+
} catch (SQLException e) {
97+
throw new RuntimeException("Error persisting entity", e);
98+
}
9199
}
92100

93101
@Override
@@ -130,11 +138,12 @@ private void persistEntity(
130138
@Nonnull PolarisCallContext callCtx,
131139
@Nonnull PolarisBaseEntity entity,
132140
PolarisBaseEntity originalEntity,
133-
Object executor) {
141+
Statement statement)
142+
throws SQLException {
134143
ModelEntity modelEntity = ModelEntity.fromEntity(entity);
135144
if (originalEntity == null) {
136145
try {
137-
execute(executor, generateInsertQuery(modelEntity, realmId));
146+
statement.executeUpdate(generateInsertQuery(modelEntity, realmId));
138147
} catch (SQLException e) {
139148
if (datasourceOperations.isConstraintViolation(e)) {
140149
PolarisBaseEntity existingEntity =
@@ -162,7 +171,7 @@ private void persistEntity(
162171
"realm_id",
163172
realmId);
164173
try {
165-
int rowsUpdated = execute(executor, generateUpdateQuery(modelEntity, params));
174+
int rowsUpdated = statement.executeUpdate(generateUpdateQuery(modelEntity, params));
166175
if (rowsUpdated == 0) {
167176
throw new RetryOnConcurrencyException(
168177
"Entity '%s' id '%s' concurrently modified; expected version %s",
@@ -175,16 +184,6 @@ private void persistEntity(
175184
}
176185
}
177186

178-
private int execute(Object executor, String query) throws SQLException {
179-
if (executor instanceof Statement) {
180-
return ((Statement) executor).executeUpdate(query);
181-
} else if (executor instanceof DatasourceOperations) {
182-
return ((DatasourceOperations) executor).executeUpdate(query);
183-
} else {
184-
throw new IllegalArgumentException("Unsupported executor: " + executor);
185-
}
186-
}
187-
188187
@Override
189188
public void writeToGrantRecords(
190189
@Nonnull PolarisCallContext callCtx, @Nonnull PolarisGrantRecord grantRec) {

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

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@
1818
*/
1919
package org.apache.polaris.extension.persistence.relational.jdbc;
2020

21-
import com.google.common.base.Preconditions;
2221
import io.smallrye.common.annotation.Identifier;
2322
import jakarta.annotation.Nullable;
2423
import jakarta.enterprise.context.ApplicationScoped;
24+
import jakarta.enterprise.inject.Instance;
2525
import jakarta.inject.Inject;
2626
import java.sql.Connection;
2727
import java.sql.SQLException;
2828
import java.util.HashMap;
29-
import java.util.List;
3029
import java.util.Map;
3130
import java.util.function.Supplier;
3231
import javax.sql.DataSource;
@@ -70,15 +69,12 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory {
7069
final Map<String, StorageCredentialCache> storageCredentialCacheMap = new HashMap<>();
7170
final Map<String, EntityCache> entityCacheMap = new HashMap<>();
7271
final Map<String, Supplier<BasePersistence>> sessionSupplierMap = new HashMap<>();
73-
final List<DataSource> dataSources;
74-
7572
protected final PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl();
73+
7674
@Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
75+
@Inject Instance<DataSource> dataSource;
7776

78-
@Inject
79-
protected JdbcMetaStoreManagerFactory(List<DataSource> dataSources) {
80-
this.dataSources = dataSources;
81-
}
77+
protected JdbcMetaStoreManagerFactory() {}
8278

8379
protected PrincipalSecretsGenerator secretsGenerator(
8480
RealmContext realmContext, @Nullable RootCredentialsSet rootCredentialsSet) {
@@ -111,13 +107,11 @@ private void initializeForRealm(
111107
}
112108

113109
private DatasourceOperations getDatasourceOperations(boolean isBootstrap) {
114-
// TODO: remove when multiple dataSources are supported.
115-
Preconditions.checkState(dataSources.size() == 1, "More than one dataSources configured");
116-
DatasourceOperations databaseOperations = new DatasourceOperations(dataSources.getFirst());
110+
DatasourceOperations databaseOperations = new DatasourceOperations(dataSource.get());
117111
if (isBootstrap) {
118112
try {
119113
DatabaseType databaseType;
120-
try (Connection connection = dataSources.getFirst().getConnection()) {
114+
try (Connection connection = dataSource.get().getConnection()) {
121115
String productName = connection.getMetaData().getDatabaseProductName();
122116
databaseType = DatabaseType.fromDisplayName(productName);
123117
}

quarkus/admin/src/main/java/org/apache/polaris/admintool/config/QuarkusProducers.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,13 @@
1818
*/
1919
package org.apache.polaris.admintool.config;
2020

21-
import io.quarkus.arc.All;
22-
import io.quarkus.arc.InstanceHandle;
2321
import io.smallrye.common.annotation.Identifier;
2422
import jakarta.annotation.Nullable;
2523
import jakarta.enterprise.context.ApplicationScoped;
2624
import jakarta.enterprise.inject.Any;
2725
import jakarta.enterprise.inject.Instance;
2826
import jakarta.enterprise.inject.Produces;
2927
import java.time.Clock;
30-
import java.util.ArrayList;
31-
import java.util.List;
32-
import javax.sql.DataSource;
3328
import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
3429
import org.apache.polaris.core.PolarisDiagnostics;
3530
import org.apache.polaris.core.config.PolarisConfigurationStore;
@@ -81,13 +76,4 @@ public PolarisConfigurationStore configurationStore() {
8176
// A configuration store is not required when running the admin tool.
8277
return new PolarisConfigurationStore() {};
8378
}
84-
85-
@Produces
86-
public List<DataSource> dataSources(@All List<InstanceHandle<DataSource>> dataSources) {
87-
List<DataSource> dataSourceList = new ArrayList<>();
88-
for (InstanceHandle<DataSource> handle : dataSources) {
89-
dataSourceList.add(handle.get());
90-
}
91-
return dataSourceList;
92-
}
9379
}

quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusProducers.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
*/
1919
package org.apache.polaris.service.quarkus.config;
2020

21-
import io.quarkus.arc.All;
22-
import io.quarkus.arc.InstanceHandle;
2321
import io.quarkus.runtime.StartupEvent;
2422
import io.smallrye.common.annotation.Identifier;
2523
import io.smallrye.context.SmallRyeManagedExecutor;
@@ -34,9 +32,6 @@
3432
import jakarta.ws.rs.container.ContainerRequestContext;
3533
import jakarta.ws.rs.core.Context;
3634
import java.time.Clock;
37-
import java.util.ArrayList;
38-
import java.util.List;
39-
import javax.sql.DataSource;
4035
import org.apache.polaris.core.PolarisCallContext;
4136
import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
4237
import org.apache.polaris.core.PolarisDiagnostics;
@@ -266,13 +261,4 @@ public ActiveRolesProvider activeRolesProvider(
266261
public void closeTaskExecutor(@Disposes @Identifier("task-executor") ManagedExecutor executor) {
267262
executor.close();
268263
}
269-
270-
@Produces
271-
public List<DataSource> dataSources(@All List<InstanceHandle<DataSource>> dataSources) {
272-
List<DataSource> dataSourceList = new ArrayList<>();
273-
for (InstanceHandle<DataSource> handle : dataSources) {
274-
dataSourceList.add(handle.get());
275-
}
276-
return dataSourceList;
277-
}
278264
}

0 commit comments

Comments
 (0)