private void refreshNodes(List<ZKUtil.NodeAndData> nodes) {
    for (ZKUtil.NodeAndData n : nodes) {
      if (Thread.interrupted()) {
        // Use Thread.interrupted so that we clear interrupt status
        break;
      }
      if (n.isEmpty()) continue;
      String path = n.getNode();
      String entry = (ZKUtil.getNodeName(path));
      try {
        refreshAuthManager(entry, n.getData());
      } catch (IOException ioe) {
        LOG.error("Failed parsing permissions for table '" + entry + "' from zk", ioe);
      }
    }
  }
Handles synchronization of access control list entries and updates throughout all nodes in the
cluster. The {@link AccessController} instance on the {@code _acl_} table regions, creates a
znode for each table as {@code /hbase/acl/tablename}, with the znode data containing a serialized
list of the permissions granted for the table. The {@code AccessController} instances on all
other cluster hosts watch the znodes for updates, which trigger updates in the
{@link AuthManager} permission cache.
hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java