Package org.projectx.zookeeper

Examples of org.projectx.zookeeper.SequentialZNode


    }

    final NavigableSet<SequentialZNode> nodes = getValidChildren();
    final boolean leaderAlive = zkDao.nodeExists(getLeader().getFullPath());
    if (!leaderAlive) {
      SequentialZNode leader = getLeader();
      log.info("Leader node {} is not alive!", getLeader());
      leader = electionStrategy.findNextLeader(nodes, getNode());

      electionState.set(getState().valueOf(leader));

      log.info("Registering a listener for leader node {}", leader);
      registerLeaderListener(leader.getFullPath());
    }

    if (electionStrategy.isLeader(nodes, getNode()) && !leaderElectionTarget.isRunning()) {
      log.info("My node {}, is the elected leader", getNode());
      leaderElectionTarget.start();
View Full Code Here


   * <p>
   *
   */
  @Override
  public void handleDataDeleted(final String dataPath) throws Exception {
    final SequentialZNode leader = getLeader();

    if (dataPath.equals(leader.getFullPath())) {
      log.info("Detected leader node deletion at: {}", dataPath);
      electNewLeader();
    }

  }
View Full Code Here

      log.info("Persistent root for leader election is missing, creating path: {}", servicePath);
      zkDao.createPersistent(servicePath);
    }

    final String address = InetUtils.getLocalHostname();
    final SequentialZNode node = zkDao.createEphemeralSequential(servicePath, address);
    log.info("Created Zookeeper node {}", node);
    final NavigableSet<SequentialZNode> children = zkDao.findChildren(servicePath);
    final SequentialZNode leader = ZNodeUtils.findNextLeader(children, node);
    return ElectionState.valueOf(node, leader);

  }
View Full Code Here

    nodes.add(FOLLOWER);
  }

  @Test
  public void test_findNextLeader() {
    final SequentialZNode nextLeader = classUnderTest.findNextLeader(nodes, FOLLOWER);

    assertEquals("incorrect leader", LEADER, nextLeader);
  }
View Full Code Here

    assertEquals("incorrect leader value", false, leader);
  }

  @Test
  public void test_getLeaderNode() {
    final SequentialZNode leader = classUnderTest.getLeader();
    assertEquals("incorrect leader", LEADER, leader);
  }
View Full Code Here

    assertTrue("state should be connected", elector.isConnected());
  }

  @Test
  public void testReElection() {
    final SequentialZNode startupNode = elector.getNode();
    final DateTime prevElection = elector.getLastElectionTime();
    final SequentialZNode newLeader = zkTemplate.createEphemeralSequential(startupNode.getPath());
    zkTemplate.delete(startupNode.getFullPath());
    assertFalse("leader should be deleted", zkClient.exists(startupNode.getFullPath()));

    // allow enough time for event thread to respond
    try {
      TimeUnit.SECONDS.sleep(1);
    } catch (final InterruptedException e) {
    }

    assertEquals("incorrect leader", newLeader, elector.getLeader());
    assertTrue("incorrect sequence", startupNode.getSequence() < elector.getNode().getSequence());
    assertTrue("incorrect sequence", newLeader.getSequence() < elector.getNode().getSequence());
    assertTrue("incorrect last election time", elector.getLastElectionTime().isAfter(prevElection));
    assertTrue("state should be connected", elector.isConnected());
  }
View Full Code Here

TOP

Related Classes of org.projectx.zookeeper.SequentialZNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.