fix 修复 dubbo redis 元数据中心 报错找不到元数据问题 官方插件代码实现类有问题

dev
疯狂的狮子Li 7 months ago
parent 7ecb5f3826
commit f34a92c6a4

@ -83,17 +83,17 @@ public class RedisMetadataReport extends AbstractMetadataReport {
@Override @Override
protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) { protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {
this.storeMetadata(providerMetadataIdentifier, serviceDefinitions); this.storeMetadata(providerMetadataIdentifier, serviceDefinitions, true);
} }
@Override @Override
protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) { protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {
this.storeMetadata(consumerMetadataIdentifier, value); this.storeMetadata(consumerMetadataIdentifier, value, true);
} }
@Override @Override
protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) { protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {
this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString())); this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()), false);
} }
@Override @Override
@ -112,7 +112,7 @@ public class RedisMetadataReport extends AbstractMetadataReport {
@Override @Override
protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) { protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {
this.storeMetadata(subscriberMetadataIdentifier, urlListStr); this.storeMetadata(subscriberMetadataIdentifier, urlListStr, false);
} }
@Override @Override
@ -125,18 +125,22 @@ public class RedisMetadataReport extends AbstractMetadataReport {
return this.getMetadata(metadataIdentifier); return this.getMetadata(metadataIdentifier);
} }
private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v) { private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) {
if (pool != null) { if (pool != null) {
storeMetadataStandalone(metadataIdentifier, v); storeMetadataStandalone(metadataIdentifier, v, ephemeral);
} else { } 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 = try (JedisCluster jedisCluster =
new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) { new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) {
jedisCluster.set(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG, v); 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) { } catch (Throwable e) {
String msg = String msg =
"Failed to put " + metadataIdentifier + " to redis cluster " + v + ", cause: " + e.getMessage(); "Failed to put " + metadataIdentifier + " to redis cluster " + v + ", cause: " + e.getMessage();
@ -145,9 +149,13 @@ public class RedisMetadataReport extends AbstractMetadataReport {
} }
} }
private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v) { private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) {
try (Jedis jedis = pool.getResource()) { try (Jedis jedis = pool.getResource()) {
jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v); if (ephemeral) {
jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v, jedisParams);
} else {
jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v);
}
} catch (Throwable e) { } catch (Throwable e) {
String msg = "Failed to put " + metadataIdentifier + " to redis " + v + ", cause: " + e.getMessage(); String msg = "Failed to put " + metadataIdentifier + " to redis " + v + ", cause: " + e.getMessage();
logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e); logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
@ -410,7 +418,7 @@ public class RedisMetadataReport extends AbstractMetadataReport {
@Override @Override
public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) { public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {
this.storeMetadata(identifier, metadataInfo.getContent()); this.storeMetadata(identifier, metadataInfo.getContent(), false);
} }
@Override @Override

Loading…
Cancel
Save