This is an automated email from the ASF dual-hosted git repository.

jianglongtao 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 aa18c5d581d Add documentation for using XA distributed transactions in 
GraalVM Native Image (#31975)
aa18c5d581d is described below

commit aa18c5d581db136475c79b292d4a1019d3dae9bc
Author: Ling Hengqian <[email protected]>
AuthorDate: Thu Jul 4 14:33:47 2024 +0800

    Add documentation for using XA distributed transactions in GraalVM Native 
Image (#31975)
---
 .../graalvm-native-image/_index.cn.md              |  28 +-
 .../graalvm-native-image/_index.en.md              |  32 +-
 .../infra/database/DatabaseTypeEngine.java         |  11 +-
 .../com.h2database/h2/2.2.224/reflect-config.json  |  18 +-
 .../reflect-config.json                            | 326 +++++++--------------
 .../resource-config.json                           |  69 ++---
 .../reflect-config.json                            |   8 +-
 7 files changed, 192 insertions(+), 300 deletions(-)

diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
index 46339c7bd39..01e3523414c 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md
@@ -234,7 +234,29 @@ Caused by: java.io.UnsupportedEncodingException: Codepage 
Cp1252 is not supporte
  [...]
 ```
 
-5. 当使用 Seata 的 BASE 集成时,用户需要使用特定的 `io.seata:seata-all:1.8.0` 版本以避开对 ByteBuddy 
Java API 的使用,
+5. 讨论在 ShardingSphere JDBC 的 GraalVM Native Image 下使用 XA 
分布式事务的所需步骤,则需要引入额外的已知前提,
+   - 
`org.apache.shardingsphere.transaction.xa.jta.datasource.swapper.DataSourceSwapper#loadXADataSource(String)`
 会通过 `java.lang.Class#getDeclaredConstructors` 实例化各数据库驱动的 
`javax.sql.XADataSource` 实现类。
+   - 各数据库驱动的 `javax.sql.XADataSource` 实现类的全类名通过实现 
`org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition`
 的 SPI,来存入 ShardingSphere 的元数据。
+
+在 GraalVM Native Image 内部,这实际上要求定义第三方依赖的 GraalVM Reachability Metadata,而 
ShardingSphere 自身仅为 `com.h2database:h2` 提供对应的 GraalVM Reachability Metadata。
+`com.mysql:mysql-connector-j` 等其他数据库驱动的 GraalVM Reachability Metadata 应自行定义,
+或将对应 JSON 提交到 https://github.com/oracle/graalvm-reachability-metadata 一侧。
+
+以 `com.mysql:mysql-connector-j:9.0.0` 的 `com.mysql.cj.jdbc.MysqlXADataSource` 
类为例,这是 MySQL JDBC Driver 的 `javax.sql.XADataSource` 的实现。
+用户需要在自有项目的 claapath 的 
`/META-INF/native-image/com.mysql/mysql-connector-j/9.0.0/` 文件夹的 
`reflect-config.json`文件内定义如下 JSON,
+以在 GraalVM Native Image 内部定义 `com.mysql.cj.jdbc.MysqlXADataSource` 的构造函数。
+
+```json
+[
+{
+  "condition":{"typeReachable":"com.mysql.cj.jdbc.MysqlXADataSource"},
+  "name":"com.mysql.cj.jdbc.MysqlXADataSource",
+  "allDeclaredConstructors": true
+}
+]
+```
+
+6. 当使用 Seata 的 BASE 集成时,用户需要使用特定的 `io.seata:seata-all:1.8.0` 版本以避开对 ByteBuddy 
Java API 的使用,
 并排除 `io.seata:seata-all:1.8.0` 中过时的 `org.antlr:antlr4-runtime:4.8` 的 Maven 
依赖。可能的配置例子如下,
 
 ```xml
@@ -265,7 +287,7 @@ Caused by: java.io.UnsupportedEncodingException: Codepage 
Cp1252 is not supporte
 </project>
 ```
 
-6. 当需要通过 ShardingSphere JDBC 使用 ClickHouse 方言时,
+7. 当需要通过 ShardingSphere JDBC 使用 ClickHouse 方言时,
 用户需要手动引入相关的可选模块和 classifier 为 `http` 的 ClickHouse JDBC 驱动。
 原则上,ShardingSphere 的 GraalVM Native Image 集成不希望使用 classifier 为 `all` 的 
`com.clickhouse:clickhouse-jdbc`,
 因为 Uber Jar 会导致采集重复的 GraalVM Reachability Metadata。
@@ -318,7 +340,7 @@ curl -s "https://get.sdkman.io"; | bash
 source "$HOME/.sdkman/bin/sdkman-init.sh"
 sdk install java 22.0.1-graalce
 sdk use java 22.0.1-graalce
-sudo apt-get install build-essential libz-dev zlib1g-dev -y
+sudo apt-get install build-essential zlib1g-dev -y
 
 git clone [email protected]:apache/shardingsphere.git
 cd ./shardingsphere/
diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
index 3579f37a5a3..35b038fd882 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md
@@ -243,7 +243,33 @@ Caused by: java.io.UnsupportedEncodingException: Codepage 
Cp1252 is not supporte
  [...]
 ```
 
-5. When using Seata's BASE integration, 
+5. To discuss the steps required to use XA distributed transactions under the 
GraalVM Native Image of ShardingSphere JDBC, 
+additional known prerequisites need to be introduced,
+   - 
`org.apache.shardingsphere.transaction.xa.jta.datasource.swapper.DataSourceSwapper#loadXADataSource(String)`
 will instantiate the `javax.sql.XADataSource` implementation class of each 
database driver through `java.lang.Class#getDeclaredConstructors`.
+   - The full class name of the `javax.sql.XADataSource` implementation class 
of each database driver is stored in the metadata of ShardingSphere by 
implementing the SPI of 
`org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition`.
+
+In the GraalVM Native Image, this actually requires the definition of the 
GraalVM Reachability Metadata of the third-party dependencies,
+while ShardingSphere itself only provides the corresponding GraalVM 
Reachability Metadata for `com.h2database:h2`.
+
+GraalVM Reachability Metadata of other database drivers such as 
`com.mysql:mysql-connector-j` should be defined by themselves,
+or the corresponding JSON should be submitted to 
https://github.com/oracle/graalvm-reachability-metadata .
+
+Take the `com.mysql.cj.jdbc.MysqlXADataSource` class of 
`com.mysql:mysql-connector-j:9.0.0` as an example,
+which is the implementation of `javax.sql.XADataSource` of MySQL JDBC Driver.
+Users need to define the following JSON in the `reflect-config.json` file in 
the `/META-INF/native-image/com.mysql/mysql-connector-j/9.0.0/` folder of their 
own project's claapath,
+to define the constructor of `com.mysql.cj.jdbc.MysqlXADataSource` inside the 
GraalVM Native Image.
+
+```json
+[
+{
+"condition":{"typeReachable":"com.mysql.cj.jdbc.MysqlXADataSource"},
+"name":"com.mysql.cj.jdbc.MysqlXADataSource",
+"allDeclaredConstructors": true
+}
+]
+```
+
+6. When using Seata's BASE integration, 
 users need to use a specific `io.seata:seata-all:1.8.0` version to avoid using 
the ByteBuddy Java API,
 and exclude the outdated Maven dependency of `org.antlr:antlr4-runtime:4.8` in 
`io.seata:seata-all:1.8.0`.
 Possible configuration examples are as follows,
@@ -276,7 +302,7 @@ Possible configuration examples are as follows,
 </project>
 ```
 
-6. When using the ClickHouse dialect through ShardingSphere JDBC, 
+7. When using the ClickHouse dialect through ShardingSphere JDBC, 
 users need to manually introduce the relevant optional modules and the 
ClickHouse JDBC driver with the classifier `http`.
 In principle, ShardingSphere's GraalVM Native Image integration does not want 
to use `com.clickhouse:clickhouse-jdbc` with classifier `all`, 
 because Uber Jar will cause the collection of duplicate GraalVM Reachability 
Metadata.
@@ -330,7 +356,7 @@ curl -s "https://get.sdkman.io"; | bash
 source "$HOME/.sdkman/bin/sdkman-init.sh"
 sdk install java 21.0.2-graalce
 sdk use java 21.0.2-graalce
-sudo apt-get install build-essential libz-dev zlib1g-dev -y
+sudo apt-get install build-essential zlib1g-dev -y
 
 git clone [email protected]:apache/shardingsphere.git
 cd ./shardingsphere/
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
index c33be3bdaee..2472f46df61 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
@@ -25,8 +25,11 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory;
 import 
org.apache.shardingsphere.infra.datasource.pool.CatalogSwitchableDataSource;
+import 
org.apache.shardingsphere.infra.datasource.pool.hikari.metadata.HikariDataSourcePoolFieldMetaData;
+import 
org.apache.shardingsphere.infra.datasource.pool.hikari.metadata.HikariDataSourcePoolMetaData;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.wrapper.SQLWrapperException;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.util.reflection.ReflectionUtils;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
@@ -115,7 +118,7 @@ public final class DatabaseTypeEngine {
     /**
      * Get storage type.
      * Similar to apache/hive 4.0.0's 
`org.apache.hive.jdbc.HiveDatabaseMetaData`, it does not implement {@link 
java.sql.DatabaseMetaData#getURL()}.
-     * So use {@link CatalogSwitchableDataSource#getUrl()} to try fuzzy 
matching.
+     * So use {@link CatalogSwitchableDataSource#getUrl()} and {@link 
ReflectionUtils#getFieldValue(Object, String)} to try fuzzy matching.
      *
      * @param dataSource data source
      * @return storage type
@@ -128,6 +131,12 @@ public final class DatabaseTypeEngine {
             if (dataSource instanceof CatalogSwitchableDataSource) {
                 return DatabaseTypeFactory.get(((CatalogSwitchableDataSource) 
dataSource).getUrl());
             }
+            if (dataSource.getClass().getName().equals(new 
HikariDataSourcePoolMetaData().getType())) {
+                HikariDataSourcePoolFieldMetaData dataSourcePoolFieldMetaData 
= new HikariDataSourcePoolFieldMetaData();
+                String jdbcUrlFieldName = 
ReflectionUtils.<String>getFieldValue(dataSource, 
dataSourcePoolFieldMetaData.getJdbcUrlFieldName())
+                        .orElseThrow(() -> new 
SQLWrapperException(sqlFeatureNotSupportedException));
+                return DatabaseTypeFactory.get(jdbcUrlFieldName);
+            }
             throw new SQLWrapperException(sqlFeatureNotSupportedException);
         } catch (final SQLException ex) {
             throw new SQLWrapperException(ex);
diff --git 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.h2database/h2/2.2.224/reflect-config.json
 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.h2database/h2/2.2.224/reflect-config.json
index 06722883c8e..72501d255ca 100644
--- 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.h2database/h2/2.2.224/reflect-config.json
+++ 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.h2database/h2/2.2.224/reflect-config.json
@@ -2,22 +2,6 @@
 {
   "condition":{"typeReachable":"org.h2.jdbcx.JdbcDataSource"},
   "name":"org.h2.jdbcx.JdbcDataSource",
-  "allDeclaredClasses": true,
-  "allDeclaredMethods": true,
-  "allDeclaredFields": true,
-  "allDeclaredConstructors": true,
-  "allPublicClasses": true,
-  "allPublicMethods": true,
-  "allPublicFields": true,
-  "allPublicConstructors": true,
-  "allRecordComponents": true,
-  "allNestMembers": true,
-  "allSigners": true,
-  "allPermittedSubclasses": true,
-  "queryAllDeclaredMethods": true,
-  "queryAllDeclaredConstructors": true,
-  "queryAllPublicMethods": true,
-  "queryAllPublicConstructors": true,
-  "unsafeAllocated": true
+  "allDeclaredConstructors": true
 }
 ]
diff --git 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
index ef50aa15261..74dab95028b 100644
--- 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
+++ 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
@@ -3,6 +3,10 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
   "name":"JdkLogger"
 },
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[B"
+},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.sql.JDBCRepositorySQLLoader"},
   "name":"[Lcom.fasterxml.jackson.databind.deser.BeanDeserializerModifier;"
@@ -11,6 +15,54 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.sql.JDBCRepositorySQLLoader"},
   "name":"[Lcom.fasterxml.jackson.databind.ser.BeanSerializerModifier;"
 },
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Bind;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Capability;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Device;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.ExposedPort;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Link;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.LxcConf;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.PortBinding;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Ports$Binding;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Ulimit;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.Volume;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.VolumeBind;"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  "name":"[Lcom.github.dockerjava.api.model.VolumeRW;"
+},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
   "name":"[Lcom.github.dockerjava.api.model.VolumesFrom;"
@@ -59,6 +111,10 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.JDBCRepository"},
   "name":"[Ljava.sql.Statement;"
 },
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+  
"name":"[Lorg.testcontainers.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;"
+},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.yaml.YamlEngine"},
   "name":"java.util.Properties",
@@ -84,10 +140,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.yaml.config.shortcut.YamlRuleConfigurationShortcuts"},
   
"name":"org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.broadcast.metadata.nodepath.BroadcastRuleNodePathProvider"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.route.engine.impl.PartialSQLRouteExecutor"},
   "name":"org.apache.shardingsphere.broadcast.route.BroadcastSQLRouter"
@@ -181,14 +233,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.merge.MergeEngine"},
   "name":"org.apache.shardingsphere.encrypt.merge.EncryptResultDecoratorEngine"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.encrypt.metadata.nodepath.EncryptRuleNodePathProvider"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaMetaDataReviseEngine"},
-  
"name":"org.apache.shardingsphere.encrypt.metadata.reviser.EncryptMetaDataReviseEntry"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry"},
   
"name":"org.apache.shardingsphere.encrypt.rewrite.context.EncryptSQLRewriteContextDecorator"
@@ -340,10 +384,6 @@
   
"name":"org.apache.shardingsphere.infra.algorithm.loadbalancer.weight.WeightLoadBalanceAlgorithm",
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.clickhouse.connector.ClickHouseConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry"},
   
"name":"org.apache.shardingsphere.infra.database.clickhouse.metadata.database.ClickHouseDatabaseMetaData"
@@ -352,10 +392,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.clickhouse.type.ClickHouseDatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.h2.connector.H2ConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader"},
   
"name":"org.apache.shardingsphere.infra.database.h2.metadata.data.loader.H2MetaDataLoader"
@@ -376,10 +412,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.mariadb.type.MariaDBDatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.mysql.connector.MySQLConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement"},
   
"name":"org.apache.shardingsphere.infra.database.mysql.keygen.MySQLGeneratedKeyColumnProvider"
@@ -400,10 +432,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.mysql.type.MySQLDatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.opengauss.connector.OpenGaussConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader"},
   
"name":"org.apache.shardingsphere.infra.database.opengauss.metadata.data.loader.OpenGaussMetaDataLoader"
@@ -420,10 +448,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.oracle.connector.OracleConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader"},
   
"name":"org.apache.shardingsphere.infra.database.oracle.metadata.data.loader.OracleMetaDataLoader"
@@ -440,10 +464,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.p6spy.type.P6spyMySQLDatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.postgresql.connector.PostgreSQLConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader"},
   
"name":"org.apache.shardingsphere.infra.database.postgresql.metadata.data.loader.PostgreSQLMetaDataLoader"
@@ -460,10 +480,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.postgresql.type.PostgreSQLDatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.sql92.connector.SQL92ConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry"},
   
"name":"org.apache.shardingsphere.infra.database.sql92.metadata.database.SQL92DatabaseMetaData"
@@ -472,10 +488,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"},
   
"name":"org.apache.shardingsphere.infra.database.sql92.type.SQL92DatabaseType"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-  
"name":"org.apache.shardingsphere.infra.database.sqlserver.connector.SQLServerConnectionPropertiesParser"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader"},
   
"name":"org.apache.shardingsphere.infra.database.sqlserver.metadata.data.loader.SQLServerMetaDataLoader"
@@ -544,36 +556,20 @@
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"},
-  
"name":"org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaDataBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"},
-  
"name":"org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaDataBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.service.persist.ComputeNodePersistService"},
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService"},
   "name":"org.apache.shardingsphere.infra.instance.yaml.YamlComputeNodeData",
   "allDeclaredFields":true,
   "queryAllPublicMethods":true,
   "methods":[{"name":"<init>","parameterTypes":[] }, 
{"name":"getAttribute","parameterTypes":[] }, 
{"name":"getVersion","parameterTypes":[] }, 
{"name":"setAttribute","parameterTypes":["java.lang.String"] }, 
{"name":"setVersion","parameterTypes":["java.lang.String"] }]
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.service.persist.ComputeNodePersistService"},
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService"},
   
"name":"org.apache.shardingsphere.infra.instance.yaml.YamlComputeNodeDataBeanInfo"
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.service.persist.ComputeNodePersistService"},
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService"},
   
"name":"org.apache.shardingsphere.infra.instance.yaml.YamlComputeNodeDataCustomizer"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory"},
-  
"name":"org.apache.shardingsphere.infra.metadata.statistics.builder.dialect.MySQLShardingSphereStatisticsBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory"},
-  
"name":"org.apache.shardingsphere.infra.metadata.statistics.builder.dialect.PostgreSQLShardingSphereStatisticsBuilder"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheBuilder"},
   "name":"org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader"
@@ -591,12 +587,12 @@
   "name":"org.apache.shardingsphere.infra.util.eventbus.EventSubscriber"
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.event.subsciber.DeliverEventSubscriberRegistry$$Lambda/0x00007f65a7c51060"},
   "name":"org.apache.shardingsphere.infra.util.eventbus.EventSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.subsciber.DeliverEventSubscriberRegistry$$Lambda/0x00007f51338d3738"},
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
   "name":"org.apache.shardingsphere.infra.util.eventbus.EventSubscriber",
   "queryAllDeclaredMethods":true
 },
@@ -616,7 +612,7 @@
   "queryAllPublicMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.service.persist.ComputeNodePersistService"},
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.service.ComputeNodePersistService"},
   "name":"org.apache.shardingsphere.infra.util.yaml.YamlConfiguration",
   "queryAllPublicMethods":true
 },
@@ -845,10 +841,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.merge.MergeEngine"},
   "name":"org.apache.shardingsphere.mask.merge.MaskResultDecoratorEngine"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.mask.metadata.nodepath.MaskRuleNodePathProvider"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.rule.builder.database.DatabaseRulesBuilder"},
   "name":"org.apache.shardingsphere.mask.rule.builder.MaskRuleBuilder"
@@ -914,112 +906,86 @@
   
"name":"org.apache.shardingsphere.mask.yaml.config.rule.YamlMaskTableRuleConfigurationCustomizer"
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.ClusterContextManagerBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.listener.watch.ListenerAssistedDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.data.event.builder.ShardingSphereDataDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.global.event.builder.GlobalRuleDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.global.event.builder.PropertiesDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.nodes.compute.online.event.builder.ComputeNodeOnlineDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.nodes.compute.online.subscriber.ComputeNodeOnlineSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.event.subsciber.DeliverEventSubscriberRegistry$$Lambda/0x00007f65a7c51060"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.deliver.DeliverQualifiedDataSourceSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.nodes.storage.event.builder.QualifiedDataSourceDispatchEventBuilder"
+  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.eventbus.EventBusContext"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.CacheEvictedSubscriber",
+  
"methods":[{"name":"onGovernanceEvent","parameterTypes":["org.apache.shardingsphere.infra.rule.event.GovernanceEvent"]
 }]
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.nodes.storage.subscriber.QualifiedDataSourceSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.CacheEvictedSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.subsciber.DeliverEventSubscriberRegistry$$Lambda/0x00007f51338d3738"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.nodes.storage.subscriber.internal.InternalQualifiedDataSourceSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ComputeNodeOnlineSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.process.subscriber.ProcessListChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.DatabaseChangedSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.cluster.event.builder.ClusterStateDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.builder.ComputeNodeStateDispatchEventBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.eventbus.EventBusContext"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.CacheEvictedSubscriber",
-  
"methods":[{"name":"onGovernanceEvent","parameterTypes":["org.apache.shardingsphere.infra.rule.event.GovernanceEvent"]
 }]
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.GlobalRuleConfigurationEventSubscriber",
+  "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.CacheEvictedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ListenerAssistedMetaDataChangedSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ConfigurationChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ProcessListChangedSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.DatabaseChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.PropertiesEventSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ListenerAssistedMetaDataChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.QualifiedDataSourceSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.eventbus.EventBusContext"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ResourceMetaDataChangedSubscriber"
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ResourceMetaDataChangedSubscriber"
+},
+{
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.listener.MetaDataChangedListener$$Lambda/0x00007f65a7c67bd0"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ResourceMetaDataChangedSubscriber"
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.listener.MetaDataChangedListener$$Lambda/0x00007f51338ec738"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ResourceMetaDataChangedSubscriber"
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ResourceMetaDataChangedSubscriber",
+  "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ResourceMetaDataChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.RuleItemChangedSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.RuleItemChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.StateChangedSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f51338e5040"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.StateChangedSubscriber",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.registry.ClusterDispatchEventSubscriberRegistry$$Lambda/0x00007f65a7c61ca8"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.StorageUnitEventSubscriber",
   "queryAllDeclaredMethods":true
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.service.PersistServiceFacade"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.service.ClusterPersistServiceBuilder",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.PersistServiceFacade"},
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.persist.ClusterPersistServiceBuilder",
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
 {
@@ -1027,70 +993,14 @@
   
"name":"org.apache.shardingsphere.mode.manager.cluster.yaml.ClusterYamlPersistRepositoryConfigurationSwapper"
 },
 {
-  
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"},
-  
"name":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.service.PersistServiceFacade"},
-  
"name":"org.apache.shardingsphere.mode.manager.standalone.service.StandalonePersistServiceBuilder",
+  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.persist.PersistServiceFacade"},
+  
"name":"org.apache.shardingsphere.mode.manager.standalone.persist.service.StandalonePersistServiceBuilder",
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.yaml.config.swapper.mode.YamlModeConfigurationSwapper"},
   
"name":"org.apache.shardingsphere.mode.manager.standalone.yaml.StandaloneYamlPersistRepositoryConfigurationSwapper"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.index.AlterIndexStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.index.CreateIndexStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.index.DropIndexStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.schema.AlterSchemaStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.schema.CreateSchemaStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.schema.DropSchemaStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.table.AlterTableStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.table.CreateTableStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.table.DropTableStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.table.RenameTableStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.view.AlterViewStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.view.CreateViewStatementSchemaRefresher"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-  
"name":"org.apache.shardingsphere.mode.metadata.refresher.type.view.DropViewStatementSchemaRefresher"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.ClusterContextManagerBuilder"},
   
"name":"org.apache.shardingsphere.mode.repository.cluster.etcd.EtcdRepository",
@@ -1182,10 +1092,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datanode.DataNodes"},
   
"name":"org.apache.shardingsphere.readwritesplitting.datanode.ReadwriteSplittingDataNodeBuilder"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.readwritesplitting.metadata.nodepath.ReadwriteSplittingRuleNodePathProvider"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.route.engine.impl.PartialSQLRouteExecutor"},
   
"name":"org.apache.shardingsphere.readwritesplitting.route.ReadwriteSplittingSQLRouter"
@@ -1281,10 +1187,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datanode.DataNodes"},
   "name":"org.apache.shardingsphere.shadow.datanode.ShadowDataNodeBuilder"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.shadow.metadata.nodepath.ShadowRuleNodePathProvider"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.route.engine.impl.PartialSQLRouteExecutor"},
   "name":"org.apache.shardingsphere.shadow.route.ShadowSQLRouter"
@@ -1464,10 +1366,6 @@
   
"name":"org.apache.shardingsphere.sharding.algorithm.sharding.range.VolumeBasedRangeShardingAlgorithm",
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.executor.audit.SQLAuditEngine"},
-  "name":"org.apache.shardingsphere.sharding.auditor.ShardingSQLAuditor"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader"},
   
"name":"org.apache.shardingsphere.sharding.checker.ShardingRuleConfigurationChecker"
@@ -1480,14 +1378,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.merge.MergeEngine"},
   "name":"org.apache.shardingsphere.sharding.merge.ShardingResultMergerEngine"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.sharding.metadata.nodepath.ShardingRuleNodePathProvider"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaMetaDataReviseEngine"},
-  
"name":"org.apache.shardingsphere.sharding.metadata.reviser.ShardingMetaDataReviseEntry"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry"},
   
"name":"org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator"
@@ -1601,10 +1491,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.yaml.YamlEngine"},
   
"name":"org.apache.shardingsphere.sharding.yaml.config.strategy.sharding.YamlStandardShardingStrategyConfigurationCustomizer"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.yaml.YamlEngine"},
-  
"name":"org.apache.shardingsphere.sharding.yaml.engine.construct.NoneShardingStrategyConfigurationYamlConstruct"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.sqlfederation.engine.SQLFederationEngine"},
   "name":"org.apache.shardingsphere.single.decider.SingleSQLFederationDecider"
@@ -1613,14 +1499,6 @@
   
"condition":{"typeReachable":"org.apache.shardingsphere.metadata.persist.MetaDataPersistService"},
   
"name":"org.apache.shardingsphere.single.decorator.SingleRuleConfigurationDecorator"
 },
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-  
"name":"org.apache.shardingsphere.single.metadata.nodepath.SingleRuleNodePathProvider"
-},
-{
-  
"condition":{"typeReachable":"org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaMetaDataReviseEngine"},
-  
"name":"org.apache.shardingsphere.single.metadata.reviser.SingleMetaDataReviseEntry"
-},
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.route.engine.impl.PartialSQLRouteExecutor"},
   "name":"org.apache.shardingsphere.single.route.SingleSQLRouter"
diff --git 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json
 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json
index d32b18e5fd1..0fb0083bb54 100644
--- 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json
+++ 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json
@@ -108,6 +108,9 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.encrypt.algorithm.standard.AESEncryptAlgorithm"},
     "pattern":"\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+    "pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.JDBCRepository"},
     "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
@@ -132,9 +135,6 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.metadata.persist.MetaDataPersistService"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.config.rule.decorator.RuleConfigurationDecorator\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolReflection"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.database.core.connector.ConnectionPropertiesParser\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.database.core.keygen.GeneratedKeyColumnProvider\\E"
@@ -156,27 +156,15 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.infra.executor.audit.SQLAuditEngine"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.executor.audit.SQLAuditor\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.executor.sql.prepare.AbstractExecutionPrepareEngine"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.executor.sql.prepare.ExecutionPrepareDecorator\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.executor.sql.prepare.driver.SQLExecutionUnitBuilder\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.instance.metadata.InstanceMetaDataBuilder\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.merge.MergeEngine"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaMetaDataReviseEngine"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.rewrite.context.SQLRewriteContextDecorator\\E"
@@ -198,42 +186,12 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.url.core.ShardingSphereURLLoadEngine"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.url.spi.ShardingSphereURLLoader\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.yaml.YamlEngine"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.util.yaml.constructor.ShardingSphereYamlConstruct\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.yaml.YamlEngine"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.util.yaml.shortcuts.ShardingSphereYamlShortcuts\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.yaml.config.swapper.mode.YamlModeConfigurationSwapper"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.infra.yaml.config.swapper.mode.YamlPersistRepositoryConfigurationSwapper\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.manager.ContextManagerBuilder\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ClusterDispatchEventSubscriberRegistry"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.DispatchEventBuilder\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.manager.listener.ContextManagerLifecycleListener\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.cluster.ClusterContextManagerBuilder"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.repository.cluster.lock.creator.DistributedLockCreator\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepository\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.mode.spi.RuleNodePathProvider\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.readwritesplitting.route.standard.StandardReadwriteSplittingDataSourceRouter"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter\\E"
@@ -246,9 +204,6 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule"},
     
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.sqltranslator.spi.SQLTranslator\\E"
-  }, {
-    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
-    
"pattern":"\\QMETA-INF/services/org.apache.shardingsphere.timeservice.spi.TimestampService\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.expr.groovy.GroovyInlineExpressionParser"},
     
"pattern":"\\QMETA-INF/services/org.codehaus.groovy.runtime.ExtensionModule\\E"
@@ -258,6 +213,9 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
     
"pattern":"\\QMETA-INF/services/org.testcontainers.core.CreateContainerCmdModifier\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+    
"pattern":"\\QMETA-INF/services/org.testcontainers.dockerclient.DockerClientProviderStrategy\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.transaction.base.seata.at.SeataATShardingSphereTransactionManager"},
     "pattern":"\\Q\\E"
@@ -273,9 +231,15 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
     
"pattern":"\\Qcom/clickhouse/client/internal/jpountz/util/linux/amd64/liblz4-java.so\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+    
"pattern":"\\Qcom/github/dockerjava/zerodep/shaded/org/apache/hc/client5/version.properties\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
     "pattern":"\\Qcontainer-license-acceptance.txt\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+    "pattern":"\\Qdocker-java.properties\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.cluster.etcd.EtcdRepository"},
     "pattern":"\\Qjndi.properties\\E"
@@ -285,6 +249,9 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.transaction.base.seata.at.SeataATShardingSphereTransactionManager"},
     "pattern":"\\Qlib/sqlparser/druid.jar\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+    "pattern":"\\Qmozilla/public-suffix-list.txt\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
     "pattern":"\\Qorg/apache/hc/core5/version.properties\\E"
@@ -2751,6 +2718,9 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.sql.JDBCRepositorySQLLoader"},
     "pattern":"\\Qsql/H2.xml\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.sql.JDBCRepositorySQLLoader"},
+    "pattern":"\\Qsql/MySQL.xml\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.sql.JDBCRepositorySQLLoader"},
     "pattern":"\\Qsql\\E"
@@ -2805,6 +2775,9 @@
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.infra.url.classpath.ClassPathURLLoader"},
     "pattern":"\\Qtest-native/yaml/transactions/xa/narayana.yaml\\E"
+  }, {
+    
"condition":{"typeReachable":"org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder"},
+    "pattern":"\\Qtestcontainers.properties\\E"
   }, {
     
"condition":{"typeReachable":"org.apache.shardingsphere.transaction.xa.atomikos.manager.AtomikosTransactionManagerProvider"},
     "pattern":"\\Qtransactions-defaults.properties\\E"
diff --git 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json
 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json
index af8a51a75d8..0f2662cd0a8 100644
--- 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json
+++ 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json
@@ -46,12 +46,12 @@
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.eventbus.EventBusContext"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.ResourceMetaDataChangedSubscriber",
-  
"methods":[{"name":"renew","parameterTypes":["org.apache.shardingsphere.mode.event.schema.table.CreateOrAlterTableEvent"]
 }, 
{"name":"renew","parameterTypes":["org.apache.shardingsphere.mode.event.schema.table.DropTableEvent"]
 }]
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.ResourceMetaDataChangedSubscriber",
+  
"methods":[{"name":"renew","parameterTypes":["org.apache.shardingsphere.mode.event.dispatch.metadata.schema.table.CreateOrAlterTableEvent"]
 }, 
{"name":"renew","parameterTypes":["org.apache.shardingsphere.mode.event.dispatch.metadata.schema.table.DropTableEvent"]
 }]
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.util.eventbus.EventBusContext"},
-  
"name":"org.apache.shardingsphere.mode.manager.cluster.coordinator.subscriber.StateChangedSubscriber",
-  
"methods":[{"name":"renew","parameterTypes":["org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.cluster.event.ClusterStateEvent"]
 }]
+  
"name":"org.apache.shardingsphere.mode.manager.cluster.event.subscriber.dispatch.StateChangedSubscriber",
+  
"methods":[{"name":"renew","parameterTypes":["org.apache.shardingsphere.mode.event.dispatch.state.cluster.ClusterStateEvent"]
 }]
 }
 ]

Reply via email to