You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/04/21 03:57:06 UTC
[07/17] james-project git commit: JAMES-2004 Cassandra should try to
connect locally by default
JAMES-2004 Cassandra should try to connect locally by default
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b62d8b6c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b62d8b6c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b62d8b6c
Branch: refs/heads/master
Commit: b62d8b6c19ef849952d5c53eb0930a6f9fb047e0
Parents: ac3fb27
Author: benwa <bt...@linagora.com>
Authored: Tue Apr 18 13:35:55 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Apr 21 08:27:41 2017 +0700
----------------------------------------------------------------------
.../modules/mailbox/CassandraSessionModule.java | 66 +++++++++++---------
1 file changed, 38 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b62d8b6c/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index 7180599..9f11022 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -18,18 +18,15 @@
****************************************************************/
package org.apache.james.modules.mailbox;
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.PerHostPercentileTracker;
-import com.datastax.driver.core.QueryLogger;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.exceptions.NoHostAvailableException;
-import com.github.steveash.guavate.Guavate;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-import com.google.inject.multibindings.Multibinder;
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-import com.nurkiewicz.asyncretry.function.RetryCallable;
+import java.io.FileNotFoundException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.james.backends.cassandra.components.CassandraModule;
@@ -39,20 +36,24 @@ import org.apache.james.backends.cassandra.init.ClusterBuilder;
import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
import org.apache.james.backends.cassandra.init.QueryLoggerConfiguration;
import org.apache.james.backends.cassandra.init.SessionWithInitializedTablesFactory;
-import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.util.Host;
+import org.apache.james.utils.PropertiesProvider;
import org.apache.james.utils.RetryExecutorUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.FileNotFoundException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.PerHostPercentileTracker;
+import com.datastax.driver.core.QueryLogger;
+import com.datastax.driver.core.Session;
+import com.datastax.driver.core.exceptions.NoHostAvailableException;
+import com.github.steveash.guavate.Guavate;
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+import com.nurkiewicz.asyncretry.function.RetryCallable;
public class CassandraSessionModule extends AbstractModule {
private static final Logger LOGGER = LoggerFactory.getLogger(CassandraSessionModule.class);
@@ -60,8 +61,10 @@ public class CassandraSessionModule extends AbstractModule {
private static final int DEFAULT_CONNECTION_MAX_RETRIES = 10;
private static final int DEFAULT_CONNECTION_MIN_DELAY = 5000;
private static final long CASSANDRA_HIGHEST_TRACKABLE_LATENCY_MILLIS = TimeUnit.SECONDS.toMillis(10);
- public static final int DEFAULT_REPLICATION_FACTOR = 1;
- public static final String DEFAULT_KEYSPACE = "apache_james";
+ private static final int DEFAULT_REPLICATION_FACTOR = 1;
+ private static final String DEFAULT_KEYSPACE = "apache_james";
+ private static final String CASSANDRA_NODES = "cassandra.nodes";
+ private static final String LOCALHOST = "127.0.0.1";
@Override
protected void configure() {
@@ -87,8 +90,8 @@ public class CassandraSessionModule extends AbstractModule {
@Provides
@Singleton
- CassandraSessionConfiguration getCassandraSessionConfiguration(FileSystem fileSystem) {
- return () -> getConfiguration(fileSystem);
+ CassandraSessionConfiguration getCassandraSessionConfiguration(PropertiesProvider propertiesProvider) {
+ return () -> getConfiguration(propertiesProvider);
}
@Provides
@@ -123,7 +126,7 @@ public class CassandraSessionModule extends AbstractModule {
}
private List<Host> listCassandraServers(PropertiesConfiguration configuration) {
- String[] ipAndPorts = configuration.getStringArray("cassandra.nodes");
+ String[] ipAndPorts = configuration.getStringArray(CASSANDRA_NODES);
return Arrays.stream(ipAndPorts)
.map(string -> Host.parseConfString(string, ClusterBuilder.DEFAULT_CASSANDRA_PORT))
@@ -177,7 +180,14 @@ public class CassandraSessionModule extends AbstractModule {
return new AsyncRetryExecutor(scheduler);
}
- private PropertiesConfiguration getConfiguration(FileSystem fileSystem) throws FileNotFoundException, ConfigurationException {
- return new PropertiesConfiguration(fileSystem.getFile(FileSystem.FILE_PROTOCOL_AND_CONF + "cassandra.properties"));
+ private PropertiesConfiguration getConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException {
+ try {
+ return propertiesProvider.getConfiguration("cassandra");
+ } catch (FileNotFoundException e) {
+ LOGGER.warn("Could not locate cassandra configuration file. Defaulting to node " + LOCALHOST + ":9042");
+ PropertiesConfiguration propertiesConfiguration = new PropertiesConfiguration();
+ propertiesConfiguration.addProperty(CASSANDRA_NODES, LOCALHOST);
+ return propertiesConfiguration;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org