This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 f4b0640bcd8 Adjust build change event logic when alter or delete meta
data node (#30639)
f4b0640bcd8 is described below
commit f4b0640bcd8d2af0c6410a0480ee9a04822b2eca
Author: zhaojinchao <[email protected]>
AuthorDate: Mon Mar 25 20:41:55 2024 +0800
Adjust build change event logic when alter or delete meta data node (#30639)
* Adjust build change event logic when alter or delete meta data node
* Fix bug
* Fix checkstyle
---
.../node/metadata/DataSourceMetaDataNode.java | 54 +++++++++++++--
.../persist/node/metadata/TableMetaDataNode.java | 12 ++++
.../persist/node/metadata/ViewMetaDataNode.java | 12 ++++
.../node/metadata/DataSourceMetaDataNodeTest.java | 33 ++++++++-
.../node/metadata/TableMetaDataNodeTest.java | 5 ++
.../node/metadata/ViewMetaDataNodeTest.java | 5 ++
.../metadata/watcher/MetaDataChangedWatcher.java | 80 +++++++++++++---------
7 files changed, 162 insertions(+), 39 deletions(-)
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
index 706c83f1d8c..f87855d8917 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
@@ -46,6 +46,8 @@ public final class DataSourceMetaDataNode {
private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
+ private static final String DATA_SOURCE_SUFFIX = "/([\\w\\-]+)$";
+
/**
* Get data source units node.
*
@@ -166,6 +168,18 @@ public final class DataSourceMetaDataNode {
return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ "?", Pattern.CASE_INSENSITIVE).matcher(path).find();
}
+ /**
+ * Get data source name by data source unit active version node.
+ *
+ * @param path path
+ * @return data source name
+ */
+ public static Optional<String>
getDataSourceNameByDataSourceUnitActiveVersionNode(final String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
+ }
+
/**
* Get data source name by data source unit node.
*
@@ -173,19 +187,31 @@ public final class DataSourceMetaDataNode {
* @return data source name
*/
public static Optional<String> getDataSourceNameByDataSourceUnitNode(final
String path) {
- Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + "/([\\w\\-]+)?",
Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
/**
- * Get data source name by data source nodes node.
+ * Get data source name by data source node active version node.
*
* @param path path
* @return data source name
*/
- public static Optional<String> getDataSourceNameByDataSourceNode(final
String path) {
- Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + "/([\\w\\-]+)?",
Pattern.CASE_INSENSITIVE);
+ public static Optional<String>
getDataSourceNameByDataSourceNodeActiveVersionNode(final String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(path);
+ return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
+ }
+
+ /**
+ * Get data source name by data source node.
+ *
+ * @param path path
+ * @return data source name
+ */
+ public static Optional<String> getDataSourceNameByDataSourceNodeNode(final
String path) {
+ Pattern pattern = Pattern.compile(getMetaDataNode() +
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(path);
return matcher.find() ? Optional.of(matcher.group(2)) :
Optional.empty();
}
@@ -200,6 +226,16 @@ public final class DataSourceMetaDataNode {
return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
}
+ /**
+ * Is data source unit node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isDataSourceUnitNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
/**
* Is data source node active version node.
*
@@ -210,6 +246,16 @@ public final class DataSourceMetaDataNode {
return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
}
+ /**
+ * Is data source node node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isDataSourceNodeNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE
+ DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX,
Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
private static String getMetaDataNode() {
return String.join("/", "", ROOT_NODE);
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNode.java
index 7c05f6032aa..8740be20ec2 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNode.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNode.java
@@ -44,6 +44,8 @@ public final class TableMetaDataNode {
private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
+ private static final String TABLE_SUFFIX = "/([\\w\\-]+)$";
+
/**
* Get meta data tables node.
*
@@ -138,6 +140,16 @@ public final class TableMetaDataNode {
return Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
}
+ /**
+ * Is table node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isTableNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + TABLES_PATTERN +
TABLE_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
private static String getMetaDataNode() {
return String.join("/", "", ROOT_NODE);
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNode.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNode.java
index 34c2f92bd35..cc1c628e2da 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNode.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNode.java
@@ -44,6 +44,8 @@ public final class ViewMetaDataNode {
private static final String ACTIVE_VERSION_SUFFIX =
"/([\\w\\-]+)/active_version";
+ private static final String VIEW_SUFFIX = "/([\\w\\-]+)$";
+
/**
* Get meta data views node.
*
@@ -138,6 +140,16 @@ public final class ViewMetaDataNode {
return Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
ACTIVE_VERSION_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
}
+ /**
+ * Is view node.
+ *
+ * @param path path
+ * @return true or false
+ */
+ public static boolean isViewNode(final String path) {
+ return Pattern.compile(getMetaDataNode() + VIEWS_PATTERN +
VIEW_SUFFIX, Pattern.CASE_INSENSITIVE).matcher(path).find();
+ }
+
private static String getMetaDataNode() {
return String.join("/", "", ROOT_NODE);
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
index 4c9cbf38bfc..5bebaba1fd9 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
@@ -32,9 +32,30 @@ class DataSourceMetaDataNodeTest {
assertTrue(DataSourceMetaDataNode.isDataSourcesNode("/metadata/logic_db/data_sources/foo_ds"));
}
+ @Test
+ void assertGetDataSourceNameByDataSourceUnitActiveVersionNode() {
+ Optional<String> actual =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitActiveVersionNode("/metadata/logic_db/data_sources/units/foo_ds/active_version");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_ds"));
+ }
+
@Test
void assertGetDataSourceNameByDataSourceUnitNode() {
- Optional<String> actual =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds/versions/0");
+ Optional<String> actual =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_ds"));
+ }
+
+ @Test
+ void assertGetDataSourceNameByDataSourceNodeActiveVersionNode() {
+ Optional<String> actual =
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeActiveVersionNode("/metadata/logic_db/data_sources/nodes/foo_ds/active_version");
+ assertTrue(actual.isPresent());
+ assertThat(actual.get(), is("foo_ds"));
+ }
+
+ @Test
+ void assertGetDataSourceNameByDataSourceNodeNode() {
+ Optional<String> actual =
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeNode("/metadata/logic_db/data_sources/nodes/foo_ds");
assertTrue(actual.isPresent());
assertThat(actual.get(), is("foo_ds"));
}
@@ -44,6 +65,16 @@ class DataSourceMetaDataNodeTest {
assertTrue(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode("/metadata/logic_db/data_sources/units/foo_ds/active_version"));
}
+ @Test
+ void assertIsDataSourceUnitNode() {
+
assertTrue(DataSourceMetaDataNode.isDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds"));
+ }
+
+ @Test
+ void assertIsDataSourceNodeNode() {
+
assertTrue(DataSourceMetaDataNode.isDataSourceNodeNode("/metadata/logic_db/data_sources/nodes/foo_ds"));
+ }
+
@Test
void assertIsDataSourceNodeActiveVersionNode() {
assertTrue(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode("/metadata/logic_db/data_sources/nodes/foo_ds/active_version"));
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
index 8af0ac316d5..abbaf8333f9 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/TableMetaDataNodeTest.java
@@ -39,6 +39,11 @@ class TableMetaDataNodeTest {
assertTrue(TableMetaDataNode.isTableActiveVersionNode("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version"));
}
+ @Test
+ void assertIsTableNode() {
+
assertTrue(TableMetaDataNode.isTableNode("/metadata/foo_db/schemas/foo_schema/tables/foo_table"));
+ }
+
@Test
void assertGetTableActiveVersionNode() {
assertThat(TableMetaDataNode.getTableActiveVersionNode("foo_db",
"foo_schema", "foo_table"),
is("/metadata/foo_db/schemas/foo_schema/tables/foo_table/active_version"));
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
index 444efffc664..87b6a97f40f 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/ViewMetaDataNodeTest.java
@@ -40,6 +40,11 @@ class ViewMetaDataNodeTest {
assertTrue(ViewMetaDataNode.isViewActiveVersionNode("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
}
+ @Test
+ void assertIsViewNode() {
+
assertTrue(ViewMetaDataNode.isViewNode("/metadata/foo_db/schemas/foo_schema/views/foo_view"));
+ }
+
@Test
void assertGetVersionNodeByActiveVersionPath() {
assertThat(DatabaseMetaDataNode.getVersionNodeByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version",
"0"),
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
index c3d21be85ea..94b1728ab9b 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
@@ -78,10 +78,12 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
return createSchemaChangedEvent(databaseName.get(),
schemaName.get(), event);
}
schemaName = DatabaseMetaDataNode.getSchemaNameByTableNode(key);
- if (databaseName.isPresent() && schemaName.isPresent() &&
TableMetaDataNode.isTableActiveVersionNode(event.getKey())) {
+ if (databaseName.isPresent() && schemaName.isPresent() &&
(TableMetaDataNode.isTableActiveVersionNode(event.getKey()))
+ || TableMetaDataNode.isTableNode(event.getKey())) {
return createTableChangedEvent(databaseName.get(),
schemaName.get(), event);
}
- if (databaseName.isPresent() && schemaName.isPresent() &&
ViewMetaDataNode.isViewActiveVersionNode(event.getKey())) {
+ if (databaseName.isPresent() && schemaName.isPresent() &&
(ViewMetaDataNode.isViewActiveVersionNode(event.getKey())
+ || ViewMetaDataNode.isViewNode(event.getKey()))) {
return createViewChangedEvent(databaseName.get(),
schemaName.get(), event);
}
if (!databaseName.isPresent()) {
@@ -114,58 +116,68 @@ public final class MetaDataChangedWatcher implements
GovernanceWatcher<Governanc
}
private Optional<GovernanceEvent> createTableChangedEvent(final String
databaseName, final String schemaName, final DataChangedEvent event) {
- Optional<String> tableName =
TableMetaDataNode.getTableNameByActiveVersionNode(event.getKey());
- Preconditions.checkState(tableName.isPresent(), "Not found table
name.");
- if (Type.DELETED == event.getType()) {
+ if (Type.DELETED == event.getType() &&
TableMetaDataNode.isTableNode(event.getKey())) {
+ Optional<String> tableName =
TableMetaDataNode.getTableName(event.getKey());
+ Preconditions.checkState(tableName.isPresent(), "Not found table
name.");
return Optional.of(new DropTableEvent(databaseName, schemaName,
tableName.get()));
}
- return Optional.of(new AlterTableEvent(databaseName, schemaName,
tableName.get(), event.getKey(), event.getValue()));
+ if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType())
&& TableMetaDataNode.isTableActiveVersionNode(event.getKey())) {
+ Optional<String> tableName =
TableMetaDataNode.getTableNameByActiveVersionNode(event.getKey());
+ Preconditions.checkState(tableName.isPresent(), "Not found table
name.");
+ return Optional.of(new AlterTableEvent(databaseName, schemaName,
tableName.get(), event.getKey(), event.getValue()));
+ }
+ return Optional.empty();
}
private Optional<GovernanceEvent> createViewChangedEvent(final String
databaseName, final String schemaName, final DataChangedEvent event) {
- Optional<String> viewName =
ViewMetaDataNode.getViewNameByActiveVersionNode(event.getKey());
- Preconditions.checkState(viewName.isPresent(), "Not found view name.");
- if (Type.DELETED == event.getType()) {
+ if (Type.DELETED == event.getType() &&
ViewMetaDataNode.isViewNode(event.getKey())) {
+ Optional<String> viewName =
ViewMetaDataNode.getViewName(event.getKey());
+ Preconditions.checkState(viewName.isPresent(), "Not found view
name.");
return Optional.of(new DropViewEvent(databaseName, schemaName,
viewName.get(), event.getKey(), event.getValue()));
}
- return Optional.of(new AlterViewEvent(databaseName, schemaName,
viewName.get(), event.getKey(), event.getValue()));
+ if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType())
&& ViewMetaDataNode.isViewActiveVersionNode(event.getKey())) {
+ Optional<String> viewName =
ViewMetaDataNode.getViewNameByActiveVersionNode(event.getKey());
+ Preconditions.checkState(viewName.isPresent(), "Not found view
name.");
+ return Optional.of(new AlterViewEvent(databaseName, schemaName,
viewName.get(), event.getKey(), event.getValue()));
+ }
+ return Optional.empty();
}
private Optional<GovernanceEvent> createDataSourceEvent(final String
databaseName, final DataChangedEvent event) {
- if
(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode(event.getKey())) {
+ if
(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode(event.getKey()) ||
DataSourceMetaDataNode.isDataSourceUnitNode(event.getKey())) {
return createStorageUnitChangedEvent(databaseName, event);
}
- if
(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode(event.getKey())) {
+ if
(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode(event.getKey()) ||
DataSourceMetaDataNode.isDataSourceNodeNode(event.getKey())) {
return createStorageNodeChangedEvent(databaseName, event);
}
return Optional.empty();
}
private Optional<GovernanceEvent> createStorageUnitChangedEvent(final
String databaseName, final DataChangedEvent event) {
- Optional<String> dataSourceUnitName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode(event.getKey());
- if (!dataSourceUnitName.isPresent()) {
- return Optional.empty();
- }
- if (Type.ADDED == event.getType()) {
- return Optional.of(new RegisterStorageUnitEvent(databaseName,
dataSourceUnitName.get(), event.getKey(), event.getValue()));
- }
- if (Type.UPDATED == event.getType()) {
- return Optional.of(new AlterStorageUnitEvent(databaseName,
dataSourceUnitName.get(), event.getKey(), event.getValue()));
- }
- return Optional.of(new UnregisterStorageUnitEvent(databaseName,
dataSourceUnitName.get()));
+ Optional<String> dataSourceUnitName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitActiveVersionNode(event.getKey());
+ if (dataSourceUnitName.isPresent()) {
+ if (Type.ADDED == event.getType()) {
+ return Optional.of(new RegisterStorageUnitEvent(databaseName,
dataSourceUnitName.get(), event.getKey(), event.getValue()));
+ }
+ if (Type.UPDATED == event.getType()) {
+ return Optional.of(new AlterStorageUnitEvent(databaseName,
dataSourceUnitName.get(), event.getKey(), event.getValue()));
+ }
+ }
+ dataSourceUnitName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode(event.getKey());
+ return dataSourceUnitName.map(optional -> new
UnregisterStorageUnitEvent(databaseName, optional));
}
private Optional<GovernanceEvent> createStorageNodeChangedEvent(final
String databaseName, final DataChangedEvent event) {
- Optional<String> dataSourceNodeName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceNode(event.getKey());
- if (!dataSourceNodeName.isPresent()) {
- return Optional.empty();
- }
- if (Type.ADDED == event.getType()) {
- return Optional.of(new RegisterStorageNodeEvent(databaseName,
dataSourceNodeName.get(), event.getKey(), event.getValue()));
- }
- if (Type.UPDATED == event.getType()) {
- return Optional.of(new AlterStorageNodeEvent(databaseName,
dataSourceNodeName.get(), event.getKey(), event.getValue()));
- }
- return Optional.of(new UnregisterStorageNodeEvent(databaseName,
dataSourceNodeName.get()));
+ Optional<String> dataSourceNodeName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeActiveVersionNode(event.getKey());
+ if (dataSourceNodeName.isPresent()) {
+ if (Type.ADDED == event.getType()) {
+ return Optional.of(new RegisterStorageNodeEvent(databaseName,
dataSourceNodeName.get(), event.getKey(), event.getValue()));
+ }
+ if (Type.UPDATED == event.getType()) {
+ return Optional.of(new AlterStorageNodeEvent(databaseName,
dataSourceNodeName.get(), event.getKey(), event.getValue()));
+ }
+ }
+ dataSourceNodeName =
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeNode(event.getKey());
+ return dataSourceNodeName.map(optional -> new
UnregisterStorageNodeEvent(databaseName, optional));
}
}