import javax.annotation.PreDestroy;
+import com.datastax.driver.core.SocketOptions;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.openecomp.sdc.be.config.Configuration;
import org.openecomp.sdc.be.config.ConfigurationManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Cluster cluster;
private boolean isConnected;
+ private Configuration.CassandrConfig configuration;
public CassandraClient() {
super();
isConnected = false;
List<String> cassandraHosts = null;
try {
- cassandraHosts = ConfigurationManager.getConfigurationManager().getConfiguration().getCassandraConfig()
- .getCassandraHosts();
- Long reconnectTimeout = ConfigurationManager.getConfigurationManager().getConfiguration()
- .getCassandraConfig().getReconnectTimeout();
+
+ this.configuration = ConfigurationManager.getConfigurationManager().getConfiguration().getCassandraConfig();
+ cassandraHosts = configuration.getCassandraHosts();
+ Long reconnectTimeout = configuration.getReconnectTimeout();
+
logger.debug("creating cluster to hosts:{} with reconnect timeout:{}", cassandraHosts, reconnectTimeout);
Cluster.Builder clusterBuilder = Cluster.builder()
.withReconnectionPolicy(new ConstantReconnectionPolicy(reconnectTimeout))
.withRetryPolicy(DefaultRetryPolicy.INSTANCE);
+
cassandraHosts.forEach(host -> clusterBuilder.addContactPoint(host));
+ setSocketOptions(clusterBuilder);
enableAuthentication(clusterBuilder);
enableSsl(clusterBuilder);
setLocalDc(clusterBuilder);
logger.info("** CassandraClient created");
}
+ private void setSocketOptions(Cluster.Builder clusterBuilder) {
+ SocketOptions socketOptions =new SocketOptions();
+ Integer socketConnectTimeout = this.configuration.getSocketConnectTimeout();
+ if( socketConnectTimeout!=null ){
+ logger.info("SocketConnectTimeout was provided, setting Cassandra client to use SocketConnectTimeout: {} .",socketConnectTimeout);
+ socketOptions.setConnectTimeoutMillis(socketConnectTimeout);
+ }
+ Integer socketReadTimeout = this.configuration.getSocketReadTimeout();
+ if( socketReadTimeout != null ){
+ logger.info("SocketReadTimeout was provided, setting Cassandra client to use SocketReadTimeout: {} .",socketReadTimeout);
+ socketOptions.setReadTimeoutMillis(socketReadTimeout);
+ }
+ clusterBuilder.withSocketOptions(socketOptions);
+ }
+
private void setLocalDc(Cluster.Builder clusterBuilder) {
String localDataCenter = ConfigurationManager.getConfigurationManager().getConfiguration().getCassandraConfig()
.getLocalDataCenter();
if (localDataCenter != null) {
- logger.info("localDatacenter was provided, setting Cassndra clint to use datacenter: {} as local.",
+ logger.info("localDatacenter was provided, setting Cassandra client to use datacenter: {} as local.",
localDataCenter);
LoadBalancingPolicy tokenAwarePolicy = new TokenAwarePolicy(
DCAwareRoundRobinPolicy.builder().withLocalDc(localDataCenter).build());
import java.util.List;
+import com.datastax.driver.core.SocketOptions;
import org.openecomp.sdc.be.config.ConfigurationManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
System.setProperty("javax.net.ssl.trustStorePassword", truststorePassword);
clusterBuilder.withSSL();
}
+
+ SocketOptions socketOptions =new SocketOptions();
+ Integer socketConnectTimeout = ConfigurationManager.getConfigurationManager().getConfiguration().getCassandraConfig().getSocketConnectTimeout();
+ if( socketConnectTimeout!=null ){
+ log.info("SocketConnectTimeout was provided, setting Cassandra client to use SocketConnectTimeout: {} .",socketConnectTimeout);
+ socketOptions.setConnectTimeoutMillis(socketConnectTimeout);
+ }
+ Integer socketReadTimeout = ConfigurationManager.getConfigurationManager().getConfiguration().getCassandraConfig().getSocketReadTimeout();
+ if( socketReadTimeout != null ){
+ log.info("SocketReadTimeout was provided, setting Cassandra client to use SocketReadTimeout: {} .",socketReadTimeout);
+ socketOptions.setReadTimeoutMillis(socketReadTimeout);
+ }
+ clusterBuilder.withSocketOptions(socketOptions);
return clusterBuilder.build();
}
List<String> cassandraHosts;
String localDataCenter;
Long reconnectTimeout;
+ Integer socketReadTimeout;
+ Integer socketConnectTimeout;
List<KeyspaceConfig> keySpaces;
boolean authenticate;
String username;
this.reconnectTimeout = reconnectTimeout;
}
+ public Integer getSocketReadTimeout() { return socketReadTimeout; }
+
+ public void setSocketReadTimeout(Integer socketReadTimeout) { this.socketReadTimeout = socketReadTimeout;}
+
+ public Integer getSocketConnectTimeout() { return socketConnectTimeout;}
+
+ public void setSocketConnectTimeout(Integer socketConnectTimeout) { this.socketConnectTimeout = socketConnectTimeout; }
+
public List<String> getCassandraHosts() {
return cassandraHosts;
}
"cache_dir": "/var/lib/cassandra/saved_caches",
"log_file": "/var/lib/cassandra/log/system.log",
"phi_convict_threshold": "8",
- "commitlog_dir": "/var/lib/cassandra/commitlog"
+ "commitlog_dir": "/var/lib/cassandra/commitlog",
+ "socket_read_timeout": "20000",
+ "socket_connect_timeout": "20000",
+ "titan_connection_timeout": "10000"
}
}
}
group "jetty"
mode "0755"
variables({
- :CASSANDRA_IP => node['Nodes']['CS'],
- :CASSANDRA_PWD => node['cassandra'][:cassandra_password],
- :CASSANDRA_USR => node['cassandra'][:cassandra_user],
- :rep_factor => replication_factor,
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment
+ :CASSANDRA_IP => node['Nodes']['CS'],
+ :CASSANDRA_PWD => node['cassandra'][:cassandra_password],
+ :CASSANDRA_USR => node['cassandra'][:cassandra_user],
+ :rep_factor => replication_factor,
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :titan_connection_timeout => node['cassandra']['titan_connection_timeout']
})
end
group "jetty"
mode "0755"
variables({
- :catalog_ip => node['HOST_IP'],
- :catalog_port => node['BE'][:http_port],
- :ssl_port => node['BE'][:https_port],
- :cassandra_ip => node['Nodes']['CS'],
- :rep_factor => 1,
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
- :titan_Path => "/var/lib/jetty/config/catalog-be/"
+ :catalog_ip => node['HOST_IP'],
+ :catalog_port => node['BE'][:http_port],
+ :ssl_port => node['BE'][:https_port],
+ :cassandra_ip => node['Nodes']['CS'],
+ :rep_factor => 1,
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :titan_Path => "/var/lib/jetty/config/catalog-be/",
+ :socket_connect_timeout => node['cassandra']['socket_connect_timeout'],
+ :socket_read_timeout => node['cassandra']['socket_read_timeout'],
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user]
+
})
end
cassandraHosts: [<%= @cassandra_ip %>]
localDataCenter: <%= @DC_NAME %>
reconnectTimeout : 30000
+ socketReadTimeout: <%= @socket_read_timeout %>
+ socketConnectTimeout: <%= @socket_connect_timeout %>
authenticate: true
- username: asdc_user
- password: Aa1234%^!
+ username: <%= @cassandra_usr %>
+ password: <%= @cassandra_pwd %>
ssl: false
truststorePath : /config/.truststore
truststorePassword : Aa123456
storage.port=9160
storage.username=<%= @CASSANDRA_USR %>
storage.password=<%= @CASSANDRA_PWD %>
-storage.connection-timeout=10000
+storage.connection-timeout=<%= @titan_connection_timeout %>
storage.cassandra.keyspace=sdctitan
storage.cassandra.ssl.enabled=false
sensitive true
mode 0755
variables({
- :cassandra_ip => "HOSTIP"
+ :cassandra_ip => "HOSTIP",
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user]
})
end
mode 0755
variables({
:cassandra_ip => "HOSTIP",
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user]
})
end
source "titan.properties.erb"
mode "0755"
variables({
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user],
+ :titan_connection_timeout => node['cassandra']['titan_connection_timeout']
})
end
source "configuration.yaml.erb"
mode 0755
variables({
- :host_ip => node['HOST_IP'],
- :catalog_port => node['BE'][:http_port],
- :ssl_port => node['BE'][:https_port],
- :cassandra_ip => node['Nodes']['CS'],
- :rep_factor => 1,
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
- :titan_Path => "/tmp/sdctool/config/"
+ :host_ip => node['HOST_IP'],
+ :catalog_port => node['BE'][:http_port],
+ :ssl_port => node['BE'][:https_port],
+ :cassandra_ip => node['Nodes']['CS'],
+ :rep_factor => 1,
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :titan_Path => "/tmp/sdctool/config/",
+ :socket_connect_timeout => node['cassandra']['socket_connect_timeout'],
+ :socket_read_timeout => node['cassandra']['socket_read_timeout'],
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user]
})
end
source "titan.properties.erb"
mode "0755"
variables({
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user],
+ :titan_connection_timeout => node['cassandra']['titan_connection_timeout']
})
end
source "configuration.yaml.erb"
mode 0755
variables({
- :host_ip => node['HOST_IP'],
- :catalog_port => node['BE'][:http_port],
- :ssl_port => node['BE'][:https_port],
- :cassandra_ip => node['Nodes']['CS'],
- :rep_factor => 1,
- :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
- :titan_Path => "/tmp/sdctool/config"
+ :host_ip => node['HOST_IP'],
+ :catalog_port => node['BE'][:http_port],
+ :ssl_port => node['BE'][:https_port],
+ :cassandra_ip => node['Nodes']['CS'],
+ :rep_factor => 1,
+ :DC_NAME => node['cassandra'][:cluster_name]+node.chef_environment,
+ :titan_Path => "/tmp/sdctool/config",
+ :socket_connect_timeout => node['cassandra']['socket_connect_timeout'],
+ :socket_read_timeout => node['cassandra']['socket_read_timeout'],
+ :cassandra_pwd => node['cassandra'][:cassandra_password],
+ :cassandra_usr => node['cassandra'][:cassandra_user]
})
end
cassandraHosts: [<%= @cassandra_ip %>]
localDataCenter: <%= @DC_NAME %>
reconnectTimeout : 30000
+ socketReadTimeout: <%= @socket_read_timeout %>
+ socketConnectTimeout: <%= @socket_connect_timeout %>
authenticate: true
username: asdc_user
password: Aa1234%^!
#!/bin/bash
-CASSANDRA_USER=asdc_user
-CASSANDRA_PASS=Aa1234%^!
+CASSANDRA_USER=<%= @cassandra_usr %>
+CASSANDRA_PASS=<%= @cassandra_pwd %>
CASSANDRA_IP=<%= @cassandra_ip %>
pass_changed=99
#!/bin/bash
-CASSANDRA_USER=asdc_user
-CASSANDRA_PASS='Aa1234%^!'
+CASSANDRA_USER='<%= @cassandra_usr %>'
+CASSANDRA_PASS='<%= @cassandra_pwd %>'
KEYSPACE="CREATE KEYSPACE IF NOT EXISTS dox WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '<%= @DC_NAME %>': '1'};"
KEYSPACE1="CREATE KEYSPACE IF NOT EXISTS zusammen_dox WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '<%= @DC_NAME %>': '1'};"
storage.backend=cassandra
storage.hostname=localhost
storage.port=9160
-storage.username=asdc_user
-storage.password=Aa1234%^!
+storage.username=<%= @cassandra_usr %>
+storage.password=<%= @cassandra_pwd %>
+storage.connection-timeout=<%= @titan_connection_timeout %>
storage.cassandra.keyspace=sdctitan
+
storage.cassandra.ssl.enabled=false
storage.cassandra.ssl.truststore.location=/var/lib/jetty/config/.truststore
storage.cassandra.ssl.truststore.password=Aa123456
-cache.db-cache = false
-cache.db-cache-clean-wait = 20
-cache.db-cache-time = 180000
-cache.db-cache-size = 0.5
-
storage.cassandra.read-consistency-level=LOCAL_QUORUM
storage.cassandra.write-consistency-level=LOCAL_QUORUM
storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.NetworkTopologyStrategy
storage.cassandra.replication-strategy-options=<%= @DC_NAME %>,1
storage.cassandra.astyanax.local-datacenter=<%= @DC_NAME %>
+cache.db-cache = false
+cache.db-cache-clean-wait = 20
+cache.db-cache-time = 180000
+cache.db-cache-size = 0.5
+
+cache.tx-cache-size = 1000000
+
storage.lock.retries=5
storage.lock.wait-time=500
sleep 10
chef-solo -c solo.rb -E ${CHEFNAME}
-
+rc=$?
+if [[ $rc != 0 ]]; then exit $rc; fi
while true; do sleep 2; done