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]
