You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/06/25 04:49:20 UTC
[james-project] 13/18: JAMES-3774 Migrate server/container/guice/cassandra to Cassandra driver 4
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 49fbe03be3cfb513d60325097d5d51c4490e7574
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Wed Jun 8 14:27:09 2022 +0700
JAMES-3774 Migrate server/container/guice/cassandra to Cassandra driver 4
---
.../mailbox/CassandraCacheSessionModule.java | 15 ++++----
.../modules/mailbox/CassandraMailboxModule.java | 9 ++---
.../modules/mailbox/CassandraSessionModule.java | 44 ++++++++--------------
.../modules/metrics/CassandraMetricsModule.java | 11 +++---
4 files changed, 30 insertions(+), 49 deletions(-)
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraCacheSessionModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraCacheSessionModule.java
index 71796b1557..027d7b5c83 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraCacheSessionModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraCacheSessionModule.java
@@ -28,8 +28,7 @@ import org.apache.james.backends.cassandra.init.configuration.ClusterConfigurati
import org.apache.james.backends.cassandra.init.configuration.InjectionNames;
import org.apache.james.backends.cassandra.init.configuration.KeyspaceConfiguration;
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.Session;
+import com.datastax.oss.driver.api.core.CqlSession;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Provides;
@@ -56,10 +55,10 @@ public class CassandraCacheSessionModule extends AbstractModule {
@Singleton
@Named(InjectionNames.CACHE)
@Provides
- Session provideSession(@Named(InjectionNames.CACHE) KeyspaceConfiguration keyspaceConfiguration,
- InitializedCacheCluster cluster,
- @Named(InjectionNames.CACHE) CassandraModule module) {
- return new SessionWithInitializedTablesFactory(keyspaceConfiguration, cluster.cluster, module).get();
+ CqlSession provideSession(@Named(InjectionNames.CACHE) KeyspaceConfiguration keyspaceConfiguration,
+ InitializedCacheCluster cluster,
+ @Named(InjectionNames.CACHE) CassandraModule module) {
+ return new SessionWithInitializedTablesFactory(cluster.cluster, module).get();
}
@Named(InjectionNames.CACHE)
@@ -70,10 +69,10 @@ public class CassandraCacheSessionModule extends AbstractModule {
}
static class InitializedCacheCluster {
- private final Cluster cluster;
+ private final CqlSession cluster;
@Inject
- private InitializedCacheCluster(Cluster cluster, ClusterConfiguration clusterConfiguration, KeyspacesConfiguration keyspacesConfiguration) {
+ private InitializedCacheCluster(CqlSession cluster, ClusterConfiguration clusterConfiguration, KeyspacesConfiguration keyspacesConfiguration) {
this.cluster = cluster;
if (clusterConfiguration.shouldCreateKeyspace()) {
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index c12a4b8a38..72397e9793 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -24,7 +24,6 @@ import javax.inject.Singleton;
import org.apache.james.adapter.mailbox.UserRepositoryAuthenticator;
import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
import org.apache.james.blob.api.BlobReferenceSource;
import org.apache.james.events.EventListener;
@@ -118,7 +117,7 @@ import org.apache.james.utils.MailboxManagerDefinition;
import org.apache.mailbox.tools.indexer.MessageIdReIndexerImpl;
import org.apache.mailbox.tools.indexer.ReIndexerImpl;
-import com.datastax.driver.core.Session;
+import com.datastax.oss.driver.api.core.CqlSession;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Provides;
@@ -247,13 +246,11 @@ public class CassandraMailboxModule extends AbstractModule {
CassandraACLMapper aclMapper(CassandraACLMapper.StoreV1 storeV1,
CassandraUserMailboxRightsDAO userMailboxRightsDAO,
CassandraACLDAOV2 cassandraACLDAOV2,
- Session session,
- CassandraConsistenciesConfiguration cassandraConsistenciesConfiguration,
+ CqlSession session,
CassandraSchemaVersionManager cassandraSchemaVersionManager) {
return new CassandraACLMapper(storeV1,
new CassandraACLMapper.StoreV2(userMailboxRightsDAO, cassandraACLDAOV2,
- new CassandraEventStore(new EventStoreDao(session, JsonEventSerializer.forModules(ACLModule.ACL_UPDATE).withoutNestedType(),
- cassandraConsistenciesConfiguration))),
+ new CassandraEventStore(new EventStoreDao(session, JsonEventSerializer.forModules(ACLModule.ACL_UPDATE).withoutNestedType()))),
cassandraSchemaVersionManager);
}
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index 165ce0551e..e5c4f98b24 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -29,11 +29,9 @@ import org.apache.james.backends.cassandra.init.KeyspaceFactory;
import org.apache.james.backends.cassandra.init.ResilientClusterProvider;
import org.apache.james.backends.cassandra.init.SessionWithInitializedTablesFactory;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
-import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
import org.apache.james.backends.cassandra.init.configuration.KeyspaceConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraHealthCheck;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
@@ -47,8 +45,7 @@ import org.apache.james.utils.PropertiesProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.Session;
+import com.datastax.oss.driver.api.core.CqlSession;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
@@ -68,12 +65,9 @@ public class CassandraSessionModule extends AbstractModule {
@Override
protected void configure() {
- bind(CassandraUtils.class).in(Scopes.SINGLETON);
- bind(Cluster.class).toProvider(ResilientClusterProvider.class);
-
bind(InitializedCluster.class).in(Scopes.SINGLETON);
- bind(Session.class).toProvider(SessionWithInitializedTablesFactory.class);
+ bind(CqlSession.class).toProvider(SessionWithInitializedTablesFactory.class);
Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
cassandraDataDefinitions.addBinding().toInstance(CassandraZonedDateTimeModule.MODULE);
@@ -92,10 +86,9 @@ public class CassandraSessionModule extends AbstractModule {
@Singleton
@Provides
- SessionWithInitializedTablesFactory provideSessionFactory(KeyspaceConfiguration keyspaceConfiguration,
- InitializedCluster cluster,
- CassandraModule module) {
- return new SessionWithInitializedTablesFactory(keyspaceConfiguration, cluster.cluster, module);
+ SessionWithInitializedTablesFactory provideSessionFactory(InitializedCluster cluster,
+ CassandraModule module) {
+ return new SessionWithInitializedTablesFactory(cluster.cluster, module);
}
@Provides
@@ -110,13 +103,13 @@ public class CassandraSessionModule extends AbstractModule {
try {
Configuration configuration = propertiesProvider.getConfiguration(BATCHSIZES_FILE_NAME);
BatchSizes batchSizes = BatchSizes.builder()
- .fetchMetadata(configuration.getInt("fetch.metadata", BatchSizes.DEFAULT_BATCH_SIZE))
- .fetchHeaders(configuration.getInt("fetch.headers", BatchSizes.DEFAULT_BATCH_SIZE))
- .fetchBody(configuration.getInt("fetch.body", BatchSizes.DEFAULT_BATCH_SIZE))
- .fetchFull(configuration.getInt("fetch.full", BatchSizes.DEFAULT_BATCH_SIZE))
- .copyBatchSize(configuration.getInt("copy", BatchSizes.DEFAULT_BATCH_SIZE))
- .moveBatchSize(configuration.getInt("move", BatchSizes.DEFAULT_BATCH_SIZE))
- .build();
+ .fetchMetadata(configuration.getInt("fetch.metadata", BatchSizes.DEFAULT_BATCH_SIZE))
+ .fetchHeaders(configuration.getInt("fetch.headers", BatchSizes.DEFAULT_BATCH_SIZE))
+ .fetchBody(configuration.getInt("fetch.body", BatchSizes.DEFAULT_BATCH_SIZE))
+ .fetchFull(configuration.getInt("fetch.full", BatchSizes.DEFAULT_BATCH_SIZE))
+ .copyBatchSize(configuration.getInt("copy", BatchSizes.DEFAULT_BATCH_SIZE))
+ .moveBatchSize(configuration.getInt("move", BatchSizes.DEFAULT_BATCH_SIZE))
+ .build();
LOGGER.debug("BatchSize configuration: {}", batchSizes);
return batchSizes;
} catch (FileNotFoundException | ConfigurationException e) {
@@ -136,13 +129,6 @@ public class CassandraSessionModule extends AbstractModule {
}
}
- @VisibleForTesting
- @Provides
- @Singleton
- CassandraConsistenciesConfiguration provideCassandraConsistenciesConfiguration(CassandraConfiguration configuration) {
- return CassandraConsistenciesConfiguration.fromConfiguration(configuration);
- }
-
@Provides
@Singleton
ClusterConfiguration provideClusterConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException {
@@ -174,11 +160,11 @@ public class CassandraSessionModule extends AbstractModule {
}
static class InitializedCluster {
- private final Cluster cluster;
+ private final CqlSession cluster;
@Inject
- private InitializedCluster(Cluster cluster, ClusterConfiguration clusterConfiguration, KeyspacesConfiguration keyspacesConfiguration) {
- this.cluster = cluster;
+ private InitializedCluster(ResilientClusterProvider sessionProvider, ClusterConfiguration clusterConfiguration, KeyspacesConfiguration keyspacesConfiguration) {
+ this.cluster = sessionProvider.get();
if (clusterConfiguration.shouldCreateKeyspace()) {
KeyspaceFactory.createKeyspace(keyspacesConfiguration.mainKeyspaceConfiguration(), cluster);
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/metrics/CassandraMetricsModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/metrics/CassandraMetricsModule.java
index f8a35207e5..317dc5a8df 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/metrics/CassandraMetricsModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/metrics/CassandraMetricsModule.java
@@ -24,7 +24,8 @@ import org.apache.james.utils.InitializationOperation;
import org.apache.james.utils.InitilizationOperationBuilder;
import com.codahale.metrics.MetricRegistry;
-import com.datastax.driver.core.Session;
+import com.datastax.oss.driver.api.core.CqlSession;
+import com.datastax.oss.driver.api.core.metrics.Metrics;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import com.google.inject.multibindings.ProvidesIntoSet;
@@ -37,13 +38,11 @@ public class CassandraMetricsModule extends AbstractModule {
}
@ProvidesIntoSet
- InitializationOperation injectMetrics(MetricRegistry metricRegistry, Session session) {
+ InitializationOperation injectMetrics(MetricRegistry metricRegistry, CqlSession session) {
return InitilizationOperationBuilder
.forClass(CassandraMetricsInjector.class)
- .init(() -> metricRegistry.registerAll(
- session.getCluster()
- .getMetrics()
- .getRegistry()));
+ .init(() -> session.getMetrics().map(Metrics::getRegistry)
+ .ifPresent(metricRegistry::registerAll));
}
public static class CassandraMetricsInjector implements Startable {
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org