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 380ff00052c Fix sonar issue for JDBCContext (#25630)
380ff00052c is described below
commit 380ff00052c43b1552a25af3c1b0ee8728234165
Author: Liang Zhang <[email protected]>
AuthorDate: Fri May 12 22:10:17 2023 +0800
Fix sonar issue for JDBCContext (#25630)
---
.../driver/jdbc/context/JDBCContext.java | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/context/JDBCContext.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/context/JDBCContext.java
index 768496ea4df..e312f9d1a35 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/context/JDBCContext.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/context/JDBCContext.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.driver.jdbc.context;
import com.google.common.eventbus.Subscribe;
-import lombok.Getter;
import
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.config.event.datasource.DataSourceChangedEvent;
@@ -27,17 +26,26 @@ import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.atomic.AtomicReference;
/**
* JDBC context.
*/
-@Getter
public final class JDBCContext {
- private volatile CachedDatabaseMetaData cachedDatabaseMetaData;
+ private final AtomicReference<CachedDatabaseMetaData>
cachedDatabaseMetaData = new AtomicReference<>();
public JDBCContext(final Map<String, DataSource> dataSources) throws
SQLException {
- cachedDatabaseMetaData =
createCachedDatabaseMetaData(dataSources).orElse(null);
+
cachedDatabaseMetaData.set(createCachedDatabaseMetaData(dataSources).orElse(null));
+ }
+
+ /**
+ * Get cached database meta data.
+ *
+ * @return cached database meta data
+ */
+ public CachedDatabaseMetaData getCachedDatabaseMetaData() {
+ return cachedDatabaseMetaData.get();
}
/**
@@ -46,9 +54,10 @@ public final class JDBCContext {
* @param event data source changed event
* @throws SQLException SQL exception
*/
+ @SuppressWarnings("UnstableApiUsage")
@Subscribe
- public synchronized void refreshCachedDatabaseMetaData(final
DataSourceChangedEvent event) throws SQLException {
- cachedDatabaseMetaData =
createCachedDatabaseMetaData(DataSourcePoolCreator.create(event.getDataSourcePropertiesMap())).orElse(null);
+ public void refreshCachedDatabaseMetaData(final DataSourceChangedEvent
event) throws SQLException {
+
cachedDatabaseMetaData.set(createCachedDatabaseMetaData(DataSourcePoolCreator.create(event.getDataSourcePropertiesMap())).orElse(null));
}
private Optional<CachedDatabaseMetaData>
createCachedDatabaseMetaData(final Map<String, DataSource> dataSources) throws
SQLException {