You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/05/12 14:10:24 UTC

[shardingsphere] branch master updated: Fix sonar issue for JDBCContext (#25630)

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 <zh...@apache.org>
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 {