jiajunwang commented on a change in pull request #365: Fix RoutingTableProvider statePropagationLatency metric reporting bug URL: https://github.com/apache/helix/pull/365#discussion_r308553871
########## File path: helix-core/src/main/java/org/apache/helix/spectator/RoutingTableProvider.java ########## @@ -558,23 +558,28 @@ protected void refresh(Map<String, Map<String, Map<String, CurrentState>>> curre private void resetRoutingTableAndNotify(long startTime, RoutingTable newRoutingTable) { _routingTableRef.set(newRoutingTable); - logger.info("Refresh the RoutingTable for cluster {}, takes {} ms.", - (_helixManager != null ? _helixManager.getClusterName() : null), + String clusterName = _helixManager != null ? _helixManager.getClusterName() : null; + logger.info("Refresh the RoutingTable for cluster {}, takes {} ms.", clusterName, (System.currentTimeMillis() - startTime)); - notifyRoutingTableChange(); + + notifyRoutingTableChange(_helixManager != null ? _helixManager.getClusterName() : null); // Update timestamp for last refresh if (_isPeriodicRefreshEnabled) { _lastRefreshTimestamp = System.currentTimeMillis(); } } - private void notifyRoutingTableChange() { - for (Map.Entry<RoutingTableChangeListener, ListenerContext> entry : _routingTableChangeListenerMap - .entrySet()) { - entry.getKey().onRoutingTableChange(new RoutingTableSnapshot(_routingTableRef.get()), - entry.getValue().getContext()); + private void notifyRoutingTableChange(String clusterName) { + // This call back is called in the main event queue of RoutingTableProvider. We add log to record time spent + // here. Potentially, we should call this callback in a separate thread if this is a bottleneck. Review comment: For the potential, let's mark it as a TODO if you think we are going to do it in the future. ---------------------------------------------------------------- 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: us...@infra.apache.org With regards, Apache Git Services