Exemple #1
0
  public Set<String> validateRegisteredNodes(ClientModel client) {
    Map<String, Integer> registeredNodes = client.getRegisteredNodes();
    if (registeredNodes == null || registeredNodes.isEmpty()) {
      return Collections.emptySet();
    }

    int currentTime = Time.currentTime();

    Set<String> validatedNodes = new TreeSet<String>();
    if (client.getNodeReRegistrationTimeout() > 0) {
      List<String> toRemove = new LinkedList<String>();
      for (Map.Entry<String, Integer> entry : registeredNodes.entrySet()) {
        Integer lastReRegistration = entry.getValue();
        if (lastReRegistration + client.getNodeReRegistrationTimeout() < currentTime) {
          toRemove.add(entry.getKey());
        } else {
          validatedNodes.add(entry.getKey());
        }
      }

      // Remove time-outed nodes
      for (String node : toRemove) {
        client.unregisterNode(node);
      }
    } else {
      // Periodic node reRegistration is disabled, so allow all nodes
      validatedNodes.addAll(registeredNodes.keySet());
    }

    return validatedNodes;
  }
Exemple #2
0
  /**
   * Unregister a cluster node from the client
   *
   * @param node
   */
  @Path("nodes/{node}")
  @DELETE
  @NoCache
  public void unregisterNode(final @PathParam("node") String node) {
    auth.requireManage();

    if (client == null) {
      throw new NotFoundException("Could not find client");
    }

    if (logger.isDebugEnabled()) logger.debug("Unregister node: " + node);

    Integer time = client.getRegisteredNodes().get(node);
    if (time == null) {
      throw new NotFoundException("Client does not have node ");
    }
    client.unregisterNode(node);
    adminEvent
        .operation(OperationType.DELETE)
        .resource(ResourceType.CLUSTER_NODE)
        .resourcePath(uriInfo)
        .success();
  }
Exemple #3
0
 @Override
 public void unregisterNode(String nodeHost) {
   getDelegateForUpdate();
   updated.unregisterNode(nodeHost);
 }