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