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 {