MAILBOX-342 Optimize table creation when already exists

This makes table creation time drop from 60ms to 0 in CassandraSetMessagesTest
when not creating the tables (ie: not the first test played).


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/cbcebb43
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/cbcebb43
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/cbcebb43

Branch: refs/heads/master
Commit: cbcebb4379df4a14e7b5d421c27ed38f211ad782
Parents: c12998f
Author: benwa <[email protected]>
Authored: Fri Jul 20 12:05:46 2018 +0700
Committer: benwa <[email protected]>
Committed: Fri Jul 20 18:18:14 2018 +0700

----------------------------------------------------------------------
 .../james/backends/cassandra/init/CassandraTableManager.java | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/cbcebb43/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
----------------------------------------------------------------------
diff --git 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
index da0de55..dc4dc6b 100644
--- 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
+++ 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
@@ -29,6 +29,7 @@ import 
org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.util.FluentFutureStream;
 
+import com.datastax.driver.core.KeyspaceMetadata;
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
@@ -45,8 +46,15 @@ public class CassandraTableManager {
     }
 
     public CassandraTableManager ensureAllTables() {
+        KeyspaceMetadata keyspaceMetadata = session.getCluster()
+            .getMetadata()
+            .getKeyspace(session.getLoggedKeyspace());
+
         module.moduleTables()
+            .stream()
+            .filter(table -> keyspaceMetadata.getTable(table.getName()) == 
null)
             .forEach(table -> session.execute(table.getCreateStatement()));
+
         return this;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to