コード例 #1
0
ファイル: ClusterState.java プロジェクト: troels/neo4j
    @Override
    public State<?, ?> handle(
        ClusterContext context, Message<ClusterMessage> message, MessageHolder outgoing)
        throws Throwable {
      switch (message.getMessageType()) {
        case configurationChanged:
          {
            ClusterMessage.ConfigurationChangeState state = message.getPayload();
            if (state.isLeaving(context.getMe())) {
              context.timeouts.cancelTimeout("leave");

              context.left();

              return start;
            } else {
              state.apply(context);
              return leaving;
            }
          }

        case leaveTimedout:
          {
            context
                .getLogger(ClusterState.class)
                .warn(
                    "Failed to leave. Cluster may consider this" + " instance still a " + "member");
            context.left();
            return start;
          }
      }

      return this;
    }