[ https://issues.apache.org/jira/browse/DRILL-4286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16238252#comment-16238252 ]
ASF GitHub Bot commented on DRILL-4286: --------------------------------------- Github user bitblender commented on a diff in the pull request: https://github.com/apache/drill/pull/921#discussion_r148685835 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java --- @@ -229,27 +272,52 @@ public DrillbitEndpoint apply(ServiceInstance<DrillbitEndpoint> input) { }); // set of newly dead bits : original bits - new set of active bits. - Set<DrillbitEndpoint> unregisteredBits = new HashSet<>(endpoints); - unregisteredBits.removeAll(newDrillbitSet); - + Set<DrillbitEndpoint> unregisteredBits = new HashSet<>(); // Set of newly live bits : new set of active bits - original bits. - Set<DrillbitEndpoint> registeredBits = new HashSet<>(newDrillbitSet); - registeredBits.removeAll(endpoints); - - endpoints = newDrillbitSet; + Set<DrillbitEndpoint> registeredBits = new HashSet<>(); + // Update the endpoints map with change in state of the endpoint or with the addition + // of new drillbit endpoints. Registered endpoints is set to newly live drillbit endpoints. + for ( DrillbitEndpoint endpoint : newDrillbitSet) { + if (endpointsMap.containsKey(new MultiKey(endpoint.getAddress(),endpoint.getUserPort()))) { + endpointsMap.put(new MultiKey(endpoint.getAddress(),endpoint.getUserPort()),endpoint); + } + else { + registeredBits.add(endpoint); + endpointsMap.put(new MultiKey(endpoint.getAddress(),endpoint.getUserPort()),endpoint); + } + } +// Iterator<MultiKey> iterator = endpointsMap.keySet().iterator() ; +// while(iterator.hasNext()) { +// MultiKey key = iterator.next(); +// if(!newDrillbitSet.contains(endpointsMap.get(key))) { +// unregisteredBits.add(endpointsMap.get(key)); +// iterator.remove(); +// } +// } + +// Remove all the endpoints that are newly dead + for ( MultiKey key: endpointsMap.keySet()) + { --- End diff -- open-brace placement for the for-loop is inconsistent with other instances > Have an ability to put server in quiescent mode of operation > ------------------------------------------------------------ > > Key: DRILL-4286 > URL: https://issues.apache.org/jira/browse/DRILL-4286 > Project: Apache Drill > Issue Type: New Feature > Components: Execution - Flow > Reporter: Victoria Markman > Assignee: Venkata Jyothsna Donapati > Priority: Major > > I think drill will benefit from mode of operation that is called "quiescent" > in some databases. > From IBM Informix server documentation: > {code} > Change gracefully from online to quiescent mode > Take the database server gracefully from online mode to quiescent mode to > restrict access to the database server without interrupting current > processing. After you perform this task, the database server sets a flag that > prevents new sessions from gaining access to the database server. The current > sessions are allowed to finish processing. After you initiate the mode > change, it cannot be canceled. During the mode change from online to > quiescent, the database server is considered to be in Shutdown mode. > {code} > This is different from shutdown, when processes are terminated. -- This message was sent by Atlassian JIRA (v6.4.14#64029)