You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by lu...@apache.org on 2022/06/07 06:10:09 UTC
[shardingsphere] branch master updated: Narayana can set parameter 'createTable' (#18213)
This is an automated email from the ASF dual-hosted git repository.
lujingshang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new f2dac1232dd Narayana can set parameter 'createTable' (#18213)
f2dac1232dd is described below
commit f2dac1232dd37feaa548ae0ba7abd76d225c7250
Author: natehuang <na...@tencent.com>
AuthorDate: Tue Jun 7 14:10:01 2022 +0800
Narayana can set parameter 'createTable' (#18213)
---
.../config/NarayanaConfigurationFileGenerator.java | 8 +++++--
.../NarayanaConfigurationFileGeneratorTest.java | 26 +++++++++++++++++++++-
.../src/main/resources/conf/server.yaml | 3 +++
3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-xa-narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/config/NarayanaConfigurationFileGenerator.java b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-x [...]
index 394c46ed8a3..4168f1e07f2 100644
--- a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-xa-narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/config/NarayanaConfigurationFileGenerator.java
+++ b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-xa-narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/config/NarayanaConfigurationFileGenerator.java
@@ -121,24 +121,28 @@ public final class NarayanaConfigurationFileGenerator implements TransactionConf
String password = String.valueOf(transactionProps.get("recoveryStorePassword"));
String dataSourceClass = transactionProps.getProperty("recoveryStoreDataSource");
if (null != url && null != user && null != password && null != dataSourceClass) {
- appendJdbcStoreConfiguration(url, user, password, dataSourceClass, config);
+ appendJdbcStoreConfiguration(url, user, password, dataSourceClass, transactionProps, config);
}
}
- private void appendJdbcStoreConfiguration(final String jdbcUrl, final String user, final String password, final String dataSourceClassName, final NarayanaConfiguration config) {
+ private void appendJdbcStoreConfiguration(final String jdbcUrl, final String user, final String password, final String dataSourceClassName,
+ final Properties transactionProps, final NarayanaConfiguration config) {
String jdbcAccessPatten = DynamicDataSourceJDBCAccess.class.getName() + ";ClassName=%s;URL=%s;User=%s;Password=%s";
String jdbcAccess = String.format(jdbcAccessPatten, dataSourceClassName, jdbcUrl, user, password);
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.objectStoreType", JDBCStore.class.getName()));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.jdbcAccess", jdbcAccess));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.tablePrefix", "Action"));
+ config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.createTable", transactionProps.getProperty("createTable", Boolean.TRUE.toString())));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.dropTable", Boolean.FALSE.toString()));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.stateStore.objectStoreType", JDBCStore.class.getName()));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.stateStore.jdbcAccess", jdbcAccess));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.stateStore.tablePrefix", "stateStore"));
+ config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.stateStore.createTable", transactionProps.getProperty("stateStoreCreateTable", Boolean.TRUE.toString())));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.stateStore.dropTable", Boolean.FALSE.toString()));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.communicationStore.objectStoreType", JDBCStore.class.getName()));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.communicationStore.jdbcAccess", jdbcAccess));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.communicationStore.tablePrefix", "Communication"));
+ config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.communicationStore.createTable", transactionProps.getProperty("communicationStoreCreateTable", Boolean.TRUE.toString())));
config.getEntries().add(createEntry("ObjectStoreEnvironmentBean.communicationStore.dropTable", Boolean.FALSE.toString()));
}
diff --git a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-xa-narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/config/NarayanaConfigurationFileGeneratorTest.java b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transacti [...]
index cdf07fef158..0e769e17126 100644
--- a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-xa-narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/config/NarayanaConfigurationFileGeneratorTest.java
+++ b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-provider/shardingsphere-transaction-xa-narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/config/NarayanaConfigurationFileGeneratorTest.java
@@ -87,7 +87,7 @@ public final class NarayanaConfigurationFileGeneratorTest {
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
InputStream inputStream = new FileInputStream(new File(ClassLoader.getSystemResource("").getPath(), "jbossts-properties.xml"));
NarayanaConfiguration narayanaConfig = (NarayanaConfiguration) unmarshaller.unmarshal(inputStream);
- assertThat(narayanaConfig.getEntries().size(), is(29));
+ assertThat(narayanaConfig.getEntries().size(), is(32));
assertCommitOnePhase(narayanaConfig);
assertTransactionSync(narayanaConfig);
assertNodeIdentifier(narayanaConfig);
@@ -107,13 +107,16 @@ public final class NarayanaConfigurationFileGeneratorTest {
assertJdbcAccess(narayanaConfig);
assertTablePrefix(narayanaConfig);
assertDropTable(narayanaConfig);
+ assertCreateTable(narayanaConfig);
assertStateStoreJdbcAccess(narayanaConfig);
assertStateStoreObjectStoreType(narayanaConfig);
assertStateStoreTablePrefix(narayanaConfig);
assertStateStoreDropTable(narayanaConfig);
+ assertStateStoreCreateTable(narayanaConfig);
assertCommunicationStoreObjectStoreType(narayanaConfig);
assertCommunicationStoreJdbcAccess(narayanaConfig);
assertCommunicationStoreTablePrefix(narayanaConfig);
+ assertCommunicationStoreCreateTable(narayanaConfig);
assertCommunicationStoreDropTable(narayanaConfig);
}
@@ -246,6 +249,13 @@ public final class NarayanaConfigurationFileGeneratorTest {
assertTrue(entry.get().getValue().contains("Action"));
}
+ private void assertCreateTable(final NarayanaConfiguration narayanaConfig) {
+ Optional<NarayanaConfigEntry> entry = narayanaConfig.getEntries().stream().filter(each -> "ObjectStoreEnvironmentBean.createTable".equals(each.getKey())).findFirst();
+ assertTrue(entry.isPresent());
+ assertThat(entry.get().getValue().size(), is(1));
+ assertTrue(entry.get().getValue().contains(Boolean.TRUE.toString()));
+ }
+
private void assertDropTable(final NarayanaConfiguration narayanaConfig) {
Optional<NarayanaConfigEntry> entry = narayanaConfig.getEntries().stream().filter(each -> "ObjectStoreEnvironmentBean.dropTable".equals(each.getKey())).findFirst();
assertTrue(entry.isPresent());
@@ -274,6 +284,13 @@ public final class NarayanaConfigurationFileGeneratorTest {
assertTrue(entry.get().getValue().contains("stateStore"));
}
+ private void assertStateStoreCreateTable(final NarayanaConfiguration narayanaConfig) {
+ Optional<NarayanaConfigEntry> entry = narayanaConfig.getEntries().stream().filter(each -> "ObjectStoreEnvironmentBean.stateStore.createTable".equals(each.getKey())).findFirst();
+ assertTrue(entry.isPresent());
+ assertThat(entry.get().getValue().size(), is(1));
+ assertTrue(entry.get().getValue().contains(Boolean.TRUE.toString()));
+ }
+
private void assertStateStoreDropTable(final NarayanaConfiguration narayanaConfig) {
Optional<NarayanaConfigEntry> entry = narayanaConfig.getEntries().stream().filter(each -> "ObjectStoreEnvironmentBean.stateStore.dropTable".equals(each.getKey())).findFirst();
assertTrue(entry.isPresent());
@@ -302,6 +319,13 @@ public final class NarayanaConfigurationFileGeneratorTest {
assertTrue(entry.get().getValue().contains("Communication"));
}
+ private void assertCommunicationStoreCreateTable(final NarayanaConfiguration narayanaConfig) {
+ Optional<NarayanaConfigEntry> entry = narayanaConfig.getEntries().stream().filter(each -> "ObjectStoreEnvironmentBean.communicationStore.createTable".equals(each.getKey())).findFirst();
+ assertTrue(entry.isPresent());
+ assertThat(entry.get().getValue().size(), is(1));
+ assertTrue(entry.get().getValue().contains(Boolean.TRUE.toString()));
+ }
+
private void assertCommunicationStoreDropTable(final NarayanaConfiguration narayanaConfig) {
Optional<NarayanaConfigEntry> entry = narayanaConfig.getEntries().stream().filter(each -> "ObjectStoreEnvironmentBean.communicationStore.dropTable".equals(each.getKey())).findFirst();
assertTrue(entry.isPresent());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/server.yaml b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/server.yaml
index 1f1592492ba..e111932916d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/server.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/server.yaml
@@ -56,6 +56,9 @@
# defaultTimeout: 180
# expiryScanInterval: 12
# periodicRecoveryPeriod: 120
+# createTable: true
+# stateStoreCreateTable: true
+# communicationStoreCreateTable: true
# - !SQL_PARSER
# sqlCommentParseEnabled: true
# sqlStatementCache: