public void refreshLabelsCache(byte[] data) throws IOException {
   List<VisibilityLabel> visibilityLabels = null;
   try {
     visibilityLabels = VisibilityUtils.readLabelsFromZKData(data);
   } catch (DeserializationException dse) {
     throw new IOException(dse);
   }
   this.lock.writeLock().lock();
   try {
     labels.clear();
     ordinalVsLabels.clear();
     for (VisibilityLabel visLabel : visibilityLabels) {
       String label = Bytes.toString(visLabel.getLabel().toByteArray());
       labels.put(label, visLabel.getOrdinal());
       ordinalVsLabels.put(visLabel.getOrdinal(), label);
     }
   } finally {
     this.lock.writeLock().unlock();
   }
 }