public void refreshUserAuthsCache(byte[] data) throws IOException {
   MultiUserAuthorizations multiUserAuths = null;
   try {
     multiUserAuths = VisibilityUtils.readUserAuthsFromZKData(data);
   } catch (DeserializationException dse) {
     throw new IOException(dse);
   }
   this.lock.writeLock().lock();
   try {
     this.userAuths.clear();
     this.groupAuths.clear();
     for (UserAuthorizations userAuths : multiUserAuths.getUserAuthsList()) {
       String user = Bytes.toString(userAuths.getUser().toByteArray());
       if (AuthUtil.isGroupPrincipal(user)) {
         this.groupAuths.put(
             AuthUtil.getGroupName(user), new HashSet<Integer>(userAuths.getAuthList()));
       } else {
         this.userAuths.put(user, new HashSet<Integer>(userAuths.getAuthList()));
       }
     }
   } finally {
     this.lock.writeLock().unlock();
   }
 }