コード例 #1
0
ファイル: TopologyBuilder.java プロジェクト: curphey/stratos
  /**
   * Remove member from topology and send member terminated event.
   *
   * @param serviceName
   * @param clusterId
   * @param networkPartitionId
   * @param partitionId
   * @param memberId
   */
  public static void handleMemberTerminated(
      String serviceName,
      String clusterId,
      String networkPartitionId,
      String partitionId,
      String memberId) {
    Topology topology = TopologyManager.getTopology();
    Service service = topology.getService(serviceName);
    Properties properties;
    if (service == null) {
      log.warn(String.format("Service %s does not exist", serviceName));
      return;
    }
    Cluster cluster = service.getCluster(clusterId);
    if (cluster == null) {
      log.warn(String.format("Cluster %s does not exist", clusterId));
      return;
    }

    Member member = cluster.getMember(memberId);
    if (member == null) {
      log.warn(String.format("Member %s does not exist", memberId));
      return;
    }

    String clusterInstanceId = member.getClusterInstanceId();

    try {
      TopologyManager.acquireWriteLock();
      properties = member.getProperties();
      cluster.removeMember(member);
      TopologyManager.updateTopology(topology);
    } finally {
      TopologyManager.releaseWriteLock();
    }
    /* @TODO leftover from grouping_poc*/
    String groupAlias = null;
    TopologyEventPublisher.sendMemberTerminatedEvent(
        serviceName,
        clusterId,
        memberId,
        clusterInstanceId,
        networkPartitionId,
        partitionId,
        properties,
        groupAlias);
  }