Java Code Examples for org.apache.hadoop.hbase.zookeeper.ZKUtil#listChildrenNoWatch()

The following examples show how to use org.apache.hadoop.hbase.zookeeper.ZKUtil#listChildrenNoWatch() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ZKSplitLogManagerCoordination.java    From hbase with Apache License 2.0 6 votes vote down vote up
@Override
public int remainingTasksInCoordination() {
  int count = 0;
  try {
    List<String> tasks = ZKUtil.listChildrenNoWatch(watcher,
            watcher.getZNodePaths().splitLogZNode);
    if (tasks != null) {
      int listSize = tasks.size();
      for (int i = 0; i < listSize; i++) {
        if (!ZKSplitLog.isRescanNode(tasks.get(i))) {
          count++;
        }
      }
    }
  } catch (KeeperException ke) {
    LOG.warn("Failed to check remaining tasks", ke);
    count = -1;
  }
  return count;
}
 
Example 2
Source File: TestRegionServerHostname.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Test
public void testRegionServerHostnameReportedToMaster() throws Exception {
  TEST_UTIL.getConfiguration().setBoolean(HRegionServer.RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY,
  true);
  StartMiniClusterOption option = StartMiniClusterOption.builder()
      .numMasters(NUM_MASTERS).numRegionServers(NUM_RS).numDataNodes(NUM_RS).build();
  TEST_UTIL.startMiniCluster(option);
  boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration());
  int expectedRS = NUM_RS + (tablesOnMaster? 1: 0);
  try (ZKWatcher zkw = TEST_UTIL.getZooKeeperWatcher()) {
    List<String> servers = ZKUtil.listChildrenNoWatch(zkw, zkw.getZNodePaths().rsZNode);
    assertEquals(expectedRS, servers.size());
  }
}
 
Example 3
Source File: ZKReplicationQueueStorage.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Override
public void removeLastSequenceIds(String peerId) throws ReplicationException {
  String suffix = "-" + peerId;
  try {
    StringBuilder sb = new StringBuilder(regionsZNode);
    int regionsZNodeLength = regionsZNode.length();
    int levelOneLength = regionsZNodeLength + 3;
    int levelTwoLength = levelOneLength + 3;
    List<String> levelOneDirs = ZKUtil.listChildrenNoWatch(zookeeper, regionsZNode);
    // it is possible that levelOneDirs is null if we haven't write any last pushed sequence ids
    // yet, so we need an extra check here.
    if (CollectionUtils.isEmpty(levelOneDirs)) {
      return;
    }
    for (String levelOne : levelOneDirs) {
      sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelOne);
      for (String levelTwo : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {
        sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelTwo);
        for (String znode : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {
          if (znode.endsWith(suffix)) {
            sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(znode);
            ZKUtil.deleteNode(zookeeper, sb.toString());
            sb.setLength(levelTwoLength);
          }
        }
        sb.setLength(levelOneLength);
      }
      sb.setLength(regionsZNodeLength);
    }
  } catch (KeeperException e) {
    throw new ReplicationException("Failed to remove all last sequence ids, peerId=" + peerId, e);
  }
}
 
Example 4
Source File: TestRegionServerHostname.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Test
public void testRegionServerHostname() throws Exception {
  Enumeration<NetworkInterface> netInterfaceList = NetworkInterface.getNetworkInterfaces();
  while (netInterfaceList.hasMoreElements()) {
    NetworkInterface ni = netInterfaceList.nextElement();
    Enumeration<InetAddress> addrList = ni.getInetAddresses();
    // iterate through host addresses and use each as hostname
    while (addrList.hasMoreElements()) {
      InetAddress addr = addrList.nextElement();
      if (addr.isLoopbackAddress() || addr.isLinkLocalAddress() || addr.isMulticastAddress() ||
          !addr.isSiteLocalAddress()) {
        continue;
      }
      String hostName = addr.getHostName();
      LOG.info("Found " + hostName + " on " + ni + ", addr=" + addr);

      TEST_UTIL.getConfiguration().set(DNS.MASTER_HOSTNAME_KEY, hostName);
      TEST_UTIL.getConfiguration().set(DNS.RS_HOSTNAME_KEY, hostName);
      StartMiniClusterOption option = StartMiniClusterOption.builder()
          .numMasters(NUM_MASTERS).numRegionServers(NUM_RS).numDataNodes(NUM_RS).build();
      TEST_UTIL.startMiniCluster(option);
      try {
        ZKWatcher zkw = TEST_UTIL.getZooKeeperWatcher();
        List<String> servers = ZKUtil.listChildrenNoWatch(zkw, zkw.getZNodePaths().rsZNode);
        // there would be NUM_RS+1 children - one for the master
        assertTrue(servers.size() ==
          NUM_RS + (LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration())? 1: 0));
        for (String server : servers) {
          assertTrue("From zookeeper: " + server + " hostname: " + hostName,
            server.startsWith(hostName.toLowerCase(Locale.ROOT)+","));
        }
        zkw.close();
      } finally {
        TEST_UTIL.shutdownMiniCluster();
      }
    }
  }
}
 
Example 5
Source File: TestMasterReplication.java    From hbase with Apache License 2.0 5 votes vote down vote up
/**
 * Tests the replication scenario 0 -> 0. By default
 * {@link BaseReplicationEndpoint#canReplicateToSameCluster()} returns false, so the
 * ReplicationSource should terminate, and no further logs should get enqueued
 */
@Test
public void testLoopedReplication() throws Exception {
  LOG.info("testLoopedReplication");
  startMiniClusters(1);
  createTableOnClusters(table);
  addPeer("1", 0, 0);
  Thread.sleep(SLEEP_TIME);

  // wait for source to terminate
  final ServerName rsName = utilities[0].getHBaseCluster().getRegionServer(0).getServerName();
  Waiter.waitFor(baseConfiguration, 10000, new Waiter.Predicate<Exception>() {
    @Override
    public boolean evaluate() throws Exception {
      ClusterMetrics clusterStatus = utilities[0].getAdmin()
          .getClusterMetrics(EnumSet.of(ClusterMetrics.Option.LIVE_SERVERS));
      ServerMetrics serverLoad = clusterStatus.getLiveServerMetrics().get(rsName);
      List<ReplicationLoadSource> replicationLoadSourceList =
          serverLoad.getReplicationLoadSourceList();
      return replicationLoadSourceList.isEmpty();
    }
  });

  Table[] htables = getHTablesOnClusters(tableName);
  putAndWait(row, famName, htables[0], htables[0]);
  rollWALAndWait(utilities[0], table.getTableName(), row);
  ZKWatcher zkw = utilities[0].getZooKeeperWatcher();
  String queuesZnode = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode,
    ZNodePaths.joinZNode("replication", "rs"));
  List<String> listChildrenNoWatch =
      ZKUtil.listChildrenNoWatch(zkw, ZNodePaths.joinZNode(queuesZnode, rsName.toString()));
  assertEquals(0, listChildrenNoWatch.size());
}
 
Example 6
Source File: ZKDataMigrator.java    From hbase with Apache License 2.0 5 votes vote down vote up
/**
 * Method for table states migration.
 * Used when upgrading from pre-2.0 to 2.0
 * Reading state from zk, applying them to internal state
 * and delete.
 * Used by master to clean migration from zk based states to
 * table descriptor based states.
 * @deprecated Since 2.0.0. To be removed in hbase-3.0.0.
 */
@Deprecated
public static Map<TableName, TableState.State> queryForTableStates(ZKWatcher zkw)
    throws KeeperException, InterruptedException {
  Map<TableName, TableState.State> rv = new HashMap<>();
  List<String> children = ZKUtil.listChildrenNoWatch(zkw, zkw.getZNodePaths().tableZNode);
  if (children == null)
    return rv;
  for (String child: children) {
    TableName tableName = TableName.valueOf(child);
    ZooKeeperProtos.DeprecatedTableState.State state = getTableState(zkw, tableName);
    TableState.State newState = TableState.State.ENABLED;
    if (state != null) {
      switch (state) {
      case ENABLED:
        newState = TableState.State.ENABLED;
        break;
      case DISABLED:
        newState = TableState.State.DISABLED;
        break;
      case DISABLING:
        newState = TableState.State.DISABLING;
        break;
      case ENABLING:
        newState = TableState.State.ENABLING;
        break;
      default:
      }
    }
    rv.put(tableName, newState);
  }
  return rv;
}
 
Example 7
Source File: ZKProcedureUtil.java    From hbase with Apache License 2.0 5 votes vote down vote up
/**
 * Helper method to print the current state of the ZK tree.
 * @see #logZKTree(String)
 * @throws KeeperException if an unexpected exception occurs
 */
protected void logZKTree(String root, String prefix) throws KeeperException {
  List<String> children = ZKUtil.listChildrenNoWatch(watcher, root);
  if (children == null) return;
  for (String child : children) {
    LOG.debug(prefix + child);
    String node = ZNodePaths.joinZNode(root.equals("/") ? "" : root, child);
    logZKTree(node, prefix + "---");
  }
}
 
Example 8
Source File: ZKSplitLogManagerCoordination.java    From hbase with Apache License 2.0 5 votes vote down vote up
private void lookForOrphans() {
  List<String> orphans;
  try {
    orphans = ZKUtil.listChildrenNoWatch(this.watcher,
            this.watcher.getZNodePaths().splitLogZNode);
    if (orphans == null) {
      LOG.warn("Could not get children of " + this.watcher.getZNodePaths().splitLogZNode);
      return;
    }
  } catch (KeeperException e) {
    LOG.warn("Could not get children of " + this.watcher.getZNodePaths().splitLogZNode + " "
        + StringUtils.stringifyException(e));
    return;
  }
  int rescan_nodes = 0;
  int listSize = orphans.size();
  for (int i = 0; i < listSize; i++) {
    String path = orphans.get(i);
    String nodepath = ZNodePaths.joinZNode(watcher.getZNodePaths().splitLogZNode, path);
    if (ZKSplitLog.isRescanNode(watcher, nodepath)) {
      rescan_nodes++;
      LOG.debug("Found orphan rescan node " + path);
    } else {
      LOG.info("Found orphan task " + path);
    }
    getDataSetWatch(nodepath, zkretries);
  }
  LOG.info("Found " + (orphans.size() - rescan_nodes) + " orphan tasks and " + rescan_nodes
      + " rescan nodes");
}
 
Example 9
Source File: ReplicationTrackerZKImpl.java    From hbase with Apache License 2.0 5 votes vote down vote up
/**
 * Get a list of all the other region servers in this cluster and set a watch
 * @return a list of server nanes
 */
private List<String> getRegisteredRegionServers(boolean watch) {
  List<String> result = null;
  try {
    if (watch) {
      result = ZKUtil.listChildrenAndWatchThem(this.zookeeper,
              this.zookeeper.getZNodePaths().rsZNode);
    } else {
      result = ZKUtil.listChildrenNoWatch(this.zookeeper, this.zookeeper.getZNodePaths().rsZNode);
    }
  } catch (KeeperException e) {
    this.abortable.abort("Get list of registered region servers", e);
  }
  return result;
}
 
Example 10
Source File: ZKReplicationPeerStorage.java    From hbase with Apache License 2.0 5 votes vote down vote up
@Override
public List<String> listPeerIds() throws ReplicationException {
  try {
    List<String> children = ZKUtil.listChildrenNoWatch(zookeeper, peersZNode);
    return children != null ? children : Collections.emptyList();
  } catch (KeeperException e) {
    throw new ReplicationException("Cannot get the list of peers", e);
  }
}
 
Example 11
Source File: ZKReplicationQueueStorage.java    From hbase with Apache License 2.0 5 votes vote down vote up
private List<ServerName> getListOfReplicators0() throws KeeperException {
  List<String> children = ZKUtil.listChildrenNoWatch(zookeeper, queuesZNode);
  if (children == null) {
    children = Collections.emptyList();
  }
  return children.stream().map(ServerName::parseServerName).collect(toList());
}
 
Example 12
Source File: ServerManager.java    From hbase with Apache License 2.0 4 votes vote down vote up
private List<String> getRegionServersInZK(final ZKWatcher zkw)
throws KeeperException {
  return ZKUtil.listChildrenNoWatch(zkw, zkw.getZNodePaths().rsZNode);
}
 
Example 13
Source File: ZKReplicationQueueStorage.java    From hbase with Apache License 2.0 4 votes vote down vote up
private List<String> getReplicableHFiles0(String peerId) throws KeeperException {
  List<String> children = ZKUtil.listChildrenNoWatch(this.zookeeper,
      getHFileRefsPeerNode(peerId));
  return children != null ? children : Collections.emptyList();
}
 
Example 14
Source File: ZKReplicationQueueStorage.java    From hbase with Apache License 2.0 4 votes vote down vote up
private List<String> getAllPeersFromHFileRefsQueue0() throws KeeperException {
  List<String> children = ZKUtil.listChildrenNoWatch(zookeeper, hfileRefsZNode);
  return children != null ? children : Collections.emptyList();
}
 
Example 15
Source File: ZKReplicationQueueStorage.java    From hbase with Apache License 2.0 4 votes vote down vote up
private List<String> getAllQueues0(ServerName serverName) throws KeeperException {
  List<String> children = ZKUtil.listChildrenNoWatch(zookeeper, getRsNode(serverName));
  return children != null ? children : Collections.emptyList();
}
 
Example 16
Source File: TestSplitLogWorker.java    From hbase with Apache License 2.0 4 votes vote down vote up
@Test
public void testRescan() throws Exception {
  LOG.info("testRescan");
  SplitLogCounters.resetCounters();
  final ServerName SRV = ServerName.valueOf("svr,1,1");
  RegionServerServices mockedRS = getRegionServer(SRV);
  slw = new SplitLogWorker(ds, TEST_UTIL.getConfiguration(), mockedRS, neverEndingTask);
  slw.start();
  Thread.yield(); // let the worker start
  Thread.sleep(100);

  String task = ZKSplitLog.getEncodedNodeName(zkw, "task");
  SplitLogTask slt = new SplitLogTask.Unassigned(MANAGER);
  zkw.getRecoverableZooKeeper().create(task,slt.toByteArray(), Ids.OPEN_ACL_UNSAFE,
    CreateMode.PERSISTENT);

  waitForCounter(SplitLogCounters.tot_wkr_task_acquired, 0, 1, WAIT_TIME);
  // now the worker is busy doing the above task

  // preempt the task, have it owned by another worker
  ZKUtil.setData(zkw, task, slt.toByteArray());
  waitForCounter(SplitLogCounters.tot_wkr_preempt_task, 0, 1, WAIT_TIME);

  // create a RESCAN node
  String rescan = ZKSplitLog.getEncodedNodeName(zkw, "RESCAN");
  rescan = zkw.getRecoverableZooKeeper().create(rescan, slt.toByteArray(), Ids.OPEN_ACL_UNSAFE,
    CreateMode.PERSISTENT_SEQUENTIAL);

  waitForCounter(SplitLogCounters.tot_wkr_task_acquired, 1, 2, WAIT_TIME);
  // RESCAN node might not have been processed if the worker became busy
  // with the above task. preempt the task again so that now the RESCAN
  // node is processed
  ZKUtil.setData(zkw, task, slt.toByteArray());
  waitForCounter(SplitLogCounters.tot_wkr_preempt_task, 1, 2, WAIT_TIME);
  waitForCounter(SplitLogCounters.tot_wkr_task_acquired_rescan, 0, 1, WAIT_TIME);

  List<String> nodes = ZKUtil.listChildrenNoWatch(zkw, zkw.getZNodePaths().splitLogZNode);
  LOG.debug(Objects.toString(nodes));
  int num = 0;
  for (String node : nodes) {
    num++;
    if (node.startsWith("RESCAN")) {
      String name = ZKSplitLog.getEncodedNodeName(zkw, node);
      String fn = ZKSplitLog.getFileName(name);
      byte [] data = ZKUtil.getData(zkw,
              ZNodePaths.joinZNode(zkw.getZNodePaths().splitLogZNode, fn));
      slt = SplitLogTask.parseFrom(data);
      assertTrue(slt.toString(), slt.isDone(SRV));
    }
  }
  assertEquals(2, num);
}
 
Example 17
Source File: ZKReplicationQueueStorage.java    From hbase with Apache License 2.0 4 votes vote down vote up
private List<String> getWALsInQueue0(ServerName serverName, String queueId)
    throws KeeperException {
  List<String> children = ZKUtil.listChildrenNoWatch(zookeeper, getQueueNode(serverName,
      queueId));
  return children != null ? children : Collections.emptyList();
}