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

zrlw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git


The following commit(s) were added to refs/heads/master by this push:
     new 168c03f1 fix Refer to the zk implementation class Some methods should 
not be out of date Resulting in metadata not found issue (#637)
168c03f1 is described below

commit 168c03f1166c4820bb98d87683cdc57b73fb27d3
Author: CrazyLionLi <[email protected]>
AuthorDate: Mon Jun 23 21:11:11 2025 +0800

    fix Refer to the zk implementation class Some methods should not be out of 
date Resulting in metadata not found issue (#637)
    
    * fix Refer to the zk implementation class Some methods should not be out 
of date Resulting in metadata not found issue
    
    * Update RedisMetadataReport.java
---
 .../metadata/store/redis/RedisMetadataReport.java  | 60 ++++++++++++----------
 1 file changed, 33 insertions(+), 27 deletions(-)

diff --git 
a/dubbo-metadata-report-extensions/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
 
b/dubbo-metadata-report-extensions/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
index b1adf7fc..fb592895 100644
--- 
a/dubbo-metadata-report-extensions/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
+++ 
b/dubbo-metadata-report-extensions/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
@@ -74,8 +74,6 @@ import static 
org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADAT
  */
 public class RedisMetadataReport extends AbstractMetadataReport {
 
-    private static final int ONE_DAY_IN_MILLISECONDS = 86400000;
-
     private static final String REDIS_DATABASE_KEY = "database";
     private static final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(RedisMetadataReport.class);
 
@@ -111,17 +109,17 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
 
     @Override
     protected void doStoreProviderMetadata(MetadataIdentifier 
providerMetadataIdentifier, String serviceDefinitions) {
-        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);
+        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions, 
true);
     }
 
     @Override
     protected void doStoreConsumerMetadata(MetadataIdentifier 
consumerMetadataIdentifier, String value) {
-        this.storeMetadata(consumerMetadataIdentifier, value);
+        this.storeMetadata(consumerMetadataIdentifier, value, true);
     }
 
     @Override
     protected void doSaveMetadata(ServiceMetadataIdentifier 
serviceMetadataIdentifier, URL url) {
-        this.storeMetadata(serviceMetadataIdentifier, 
URL.encode(url.toFullString()));
+        this.storeMetadata(serviceMetadataIdentifier, 
URL.encode(url.toFullString()), false);
     }
 
     @Override
@@ -140,7 +138,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
 
     @Override
     protected void doSaveSubscriberData(SubscriberMetadataIdentifier 
subscriberMetadataIdentifier, String urlListStr) {
-        this.storeMetadata(subscriberMetadataIdentifier, urlListStr);
+        this.storeMetadata(subscriberMetadataIdentifier, urlListStr, false);
     }
 
     @Override
@@ -153,29 +151,37 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
         return this.getMetadata(metadataIdentifier);
     }
 
-    private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, 
String v) {
+    private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, 
String v, boolean ephemeral) {
         if (pool != null) {
-            storeMetadataStandalone(metadataIdentifier, v);
+            storeMetadataStandalone(metadataIdentifier, v, ephemeral);
         } else {
-            storeMetadataInCluster(metadataIdentifier, v);
+            storeMetadataInCluster(metadataIdentifier, v, ephemeral);
         }
     }
 
-    private void storeMetadataInCluster(BaseMetadataIdentifier 
metadataIdentifier, String v) {
+    private void storeMetadataInCluster(BaseMetadataIdentifier 
metadataIdentifier, String v, boolean ephemeral) {
         try (JedisCluster jedisCluster =
-                new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
-            jedisCluster.set(metadataIdentifier.getIdentifierKey() + 
META_DATA_STORE_TAG, v, jedisParams);
+                 new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
+            if (ephemeral) {
+                jedisCluster.set(metadataIdentifier.getIdentifierKey() + 
META_DATA_STORE_TAG, v, jedisParams);
+            } else {
+                jedisCluster.set(metadataIdentifier.getIdentifierKey() + 
META_DATA_STORE_TAG, v);
+            }
         } catch (Throwable e) {
             String msg =
-                    "Failed to put " + metadataIdentifier + " to redis cluster 
" + v + ", cause: " + e.getMessage();
+                "Failed to put " + metadataIdentifier + " to redis cluster " + 
v + ", cause: " + e.getMessage();
             logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
             throw new RpcException(msg, e);
         }
     }
 
-    private void storeMetadataStandalone(BaseMetadataIdentifier 
metadataIdentifier, String v) {
+    private void storeMetadataStandalone(BaseMetadataIdentifier 
metadataIdentifier, String v, boolean ephemeral) {
         try (Jedis jedis = pool.getResource()) {
-            jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), 
v, jedisParams);
+            if (ephemeral) {
+                
jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v, 
jedisParams);
+            } else {
+                
jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v);
+            }
         } catch (Throwable e) {
             String msg = "Failed to put " + metadataIdentifier + " to redis " 
+ v + ", cause: " + e.getMessage();
             logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
@@ -193,7 +199,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
 
     private void deleteMetadataInCluster(BaseMetadataIdentifier 
metadataIdentifier) {
         try (JedisCluster jedisCluster =
-                new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
+                 new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
             jedisCluster.del(metadataIdentifier.getIdentifierKey() + 
META_DATA_STORE_TAG);
         } catch (Throwable e) {
             String msg = "Failed to delete " + metadataIdentifier + " from 
redis cluster , cause: " + e.getMessage();
@@ -222,7 +228,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
 
     private String getMetadataInCluster(BaseMetadataIdentifier 
metadataIdentifier) {
         try (JedisCluster jedisCluster =
-                new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
+                 new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
             return jedisCluster.get(metadataIdentifier.getIdentifierKey() + 
META_DATA_STORE_TAG);
         } catch (Throwable e) {
             String msg = "Failed to get " + metadataIdentifier + " from redis 
cluster , cause: " + e.getMessage();
@@ -254,7 +260,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
      */
     @Override
     public boolean registerServiceAppMapping(
-            String serviceInterface, String defaultMappingGroup, String 
newConfigContent, Object ticket) {
+        String serviceInterface, String defaultMappingGroup, String 
newConfigContent, Object ticket) {
         try {
             if (null != ticket && !(ticket instanceof String)) {
                 throw new IllegalArgumentException("redis publishConfigCas 
requires stat type ticket");
@@ -282,7 +288,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
      */
     private boolean storeMappingInCluster(String key, String field, String 
value, String ticket) {
         try (JedisCluster jedisCluster =
-                new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
+                 new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
             Jedis jedis = new 
Jedis(jedisCluster.getConnectionFromSlot(JedisClusterCRC16.getSlot(key)));
             jedis.watch(key);
             String oldValue = jedis.hget(key, field);
@@ -374,7 +380,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
 
     private String getMappingDataInCluster(String key, String field) {
         try (JedisCluster jedisCluster =
-                new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
+                 new JedisCluster(jedisClusterNodes, timeout, timeout, 2, 
password, new GenericObjectPoolConfig<>())) {
             return jedisCluster.hget(key, field);
         } catch (Throwable e) {
             String msg = "Failed to get " + key + ":" + field + " from redis 
cluster , cause: " + e.getMessage();
@@ -415,11 +421,11 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
     @Override
     public Set<String> getServiceAppMapping(String serviceKey, MappingListener 
listener, URL url) {
         MappingDataListener mappingDataListener =
-                ConcurrentHashMapUtils.computeIfAbsent(mappingDataListenerMap, 
buildPubSubKey(), k -> {
-                    MappingDataListener dataListener = new 
MappingDataListener(buildPubSubKey());
-                    dataListener.start();
-                    return dataListener;
-                });
+            ConcurrentHashMapUtils.computeIfAbsent(mappingDataListenerMap, 
buildPubSubKey(), k -> {
+                MappingDataListener dataListener = new 
MappingDataListener(buildPubSubKey());
+                dataListener.start();
+                return dataListener;
+            });
         mappingDataListener.getNotifySub().addListener(serviceKey, listener);
         return this.getServiceAppMapping(serviceKey, url);
     }
@@ -438,7 +444,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
 
     @Override
     public void publishAppMetadata(SubscriberMetadataIdentifier identifier, 
MetadataInfo metadataInfo) {
-        this.storeMetadata(identifier, metadataInfo.getContent());
+        this.storeMetadata(identifier, metadataInfo.getContent(), false);
     }
 
     @Override
@@ -532,7 +538,7 @@ public class RedisMetadataReport extends 
AbstractMetadataReport {
                     }
                 } else {
                     try (JedisCluster jedisCluster = new JedisCluster(
-                            jedisClusterNodes, timeout, timeout, 2, password, 
new GenericObjectPoolConfig<>())) {
+                        jedisClusterNodes, timeout, timeout, 2, password, new 
GenericObjectPoolConfig<>())) {
                         jedisCluster.subscribe(notifySub, path);
                     } catch (Throwable e) {
                         String msg = "Failed to subscribe " + path + ", cause: 
" + e.getMessage();

Reply via email to