diff --git a/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/CassandraPathDB.java b/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/CassandraPathDB.java index 2da4fdb..4784039 100644 --- a/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/CassandraPathDB.java +++ b/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/CassandraPathDB.java @@ -21,6 +21,7 @@ import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; +import com.datastax.driver.core.policies.ConstantReconnectionPolicy; import com.datastax.driver.mapping.Mapper; import com.datastax.driver.mapping.MappingManager; import com.datastax.driver.mapping.Result; @@ -87,6 +88,8 @@ public class CassandraPathDB private int replicationFactor = 1; // keyspace replica, default 1 + private long reconnectDelay = 60000; + private PreparedStatement preparedExistQuery, preparedListQuery, preparedListCheckEmpty, preparedContainingQuery, preparedExistFileQuery, preparedUpdateExpiration, preparedReverseMapIncrement, preparedReverseMapReduction, preparedFilesystemIncrement, preparedFilesystemReduction, preparedFilesystemList; @@ -114,8 +117,15 @@ public CassandraPathDB( PathMappedStorageConfig config ) int port = (Integer) config.getProperty( CassandraPathDBUtils.PROP_CASSANDRA_PORT ); String username = (String) config.getProperty( CassandraPathDBUtils.PROP_CASSANDRA_USER ); String password = (String) config.getProperty( CassandraPathDBUtils.PROP_CASSANDRA_PASS ); + Long delay = (Long) config.getProperty( CassandraPathDBUtils.PROP_CASSANDRA_RECONNECT_DELAY ); Cluster.Builder builder = Cluster.builder().withoutJMXReporting().addContactPoint( host ).withPort( port ); + if ( delay != null ) + { + reconnectDelay = delay; + } + builder.withReconnectionPolicy( new ConstantReconnectionPolicy( reconnectDelay ) ); + if ( isNotBlank( username ) && isNotBlank( password ) ) { logger.debug( "Build with credentials, user: {}, pass: ****", username ); diff --git a/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/util/CassandraPathDBUtils.java b/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/util/CassandraPathDBUtils.java index 6e95820..f0b2ce8 100644 --- a/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/util/CassandraPathDBUtils.java +++ b/pathdb/datastax/src/main/java/org/commonjava/storage/pathmapped/pathdb/datastax/util/CassandraPathDBUtils.java @@ -28,6 +28,8 @@ public class CassandraPathDBUtils public static final String PROP_CASSANDRA_PASS = "cassandra_pass"; + public static final String PROP_CASSANDRA_RECONNECT_DELAY = "cassandra_reconnect_delay"; + public static final String PROP_CASSANDRA_KEYSPACE = "cassandra_keyspace"; public static final String PROP_CASSANDRA_REPLICATION_FACTOR = "cassandra_replication_factor";