pkuwm commented on a change in pull request #955: Fix MSD routing data 
refreshing for update methods
URL: https://github.com/apache/helix/pull/955#discussion_r409024277
 
 

 ##########
 File path: 
helix-rest/src/main/java/org/apache/helix/rest/metadatastore/ZkMetadataStoreDirectory.java
 ##########
 @@ -304,42 +314,35 @@ public boolean deleteShardingKey(String namespace, 
String realm, String sharding
    */
   @Override
   public void refreshRoutingData(String namespace) {
-    // Safe to ignore the callback if any of the maps are null.
-    // If routingDataMap is null, then it will be populated by the constructor 
anyway
-    // If routingDataMap is not null, then it's safe for the callback function 
to update it
-    if (_routingZkAddressMap == null || _realmToShardingKeysMap == null
-        || _routingDataReaderMap == null || _routingDataWriterMap == null) {
-      LOG.warn(
-          "refreshRoutingData callback called before ZKMetadataStoreDirectory 
was fully initialized. Skipping refresh!");
-      return;
-    }
-
     // Check if namespace exists; otherwise, return as a NOP and log it
     if (!_routingZkAddressMap.containsKey(namespace)) {
       LOG.error(
           "Failed to refresh internally-cached routing data! Namespace not 
found: " + namespace);
       return;
     }
 
-    // Remove the raw data first in case of failure on creation
-    _realmToShardingKeysMap.remove(namespace);
-    // Remove routing data first in case of failure on creation
-    _routingDataMap.remove(namespace);
-
     Map<String, List<String>> rawRoutingData;
     try {
       rawRoutingData = _routingDataReaderMap.get(namespace).getRoutingData();
-      _realmToShardingKeysMap.put(namespace, rawRoutingData);
     } catch (InvalidRoutingDataException e) {
       LOG.error("Failed to refresh cached routing data for namespace {}", 
namespace, e);
+      _realmToShardingKeysMap.remove(namespace);
 
 Review comment:
   I keep it here because if it is assigned empty data, one other test 
`TestRoutingDataUpdate` would fail because it assumes routing namespace is 
deleted. Let's have more careful discussion about the behavior before we change 
it here.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to