[ 
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)

Reply via email to