From 73f37271febf8bbbadbb9ed94933c5cc3bc5d9fd Mon Sep 17 00:00:00 2001 From: van-vanich Date: Thu, 2 Dec 2021 18:05:03 +0200 Subject: [PATCH] fix the issue, when we don't can set keyspace name for Cassandra --- .../CassandraAbstractDatabaseSchemaService.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java index 1a44d9d61a..7580180a18 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraAbstractDatabaseSchemaService.java @@ -18,6 +18,7 @@ package org.thingsboard.server.service.install; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.thingsboard.server.dao.cassandra.CassandraInstallCluster; import org.thingsboard.server.service.install.cql.CQLStatementsParser; @@ -29,6 +30,7 @@ import java.util.List; public abstract class CassandraAbstractDatabaseSchemaService implements DatabaseSchemaService { private static final String CASSANDRA_DIR = "cassandra"; + private static final String CASSANDRA_STANDARD_KEYSPACE = "thingsboard"; @Autowired @Qualifier("CassandraInstallCluster") @@ -37,6 +39,9 @@ public abstract class CassandraAbstractDatabaseSchemaService implements Database @Autowired private InstallScripts installScripts; + @Value("${cassandra.keyspace_name}") + private String keyspaceName; + private final String schemaCql; protected CassandraAbstractDatabaseSchemaService(String schemaCql) { @@ -61,6 +66,10 @@ public abstract class CassandraAbstractDatabaseSchemaService implements Database private void loadCql(Path cql) throws Exception { List statements = new CQLStatementsParser(cql).getStatements(); - statements.forEach(statement -> cluster.getSession().execute(statement)); + statements.forEach(statement -> cluster.getSession().execute(getCassandraKeyspaceName(statement))); + } + + private String getCassandraKeyspaceName(String statement) { + return statement.replaceFirst(CASSANDRA_STANDARD_KEYSPACE, keyspaceName); } }