public synchronized List<HSyndicateUGMonitorResults<byte[]>> getLocalCachedBlockInfo(
      SyndicateFSPath path) throws IOException {
    List<HSyndicateUGMonitorResults<byte[]>> bitmaps =
        new ArrayList<HSyndicateUGMonitorResults<byte[]>>();

    for (String gateway_hostname : usergateway_hostnames) {
      SyndicateFileSystem fs = syndicateFSs.get(gateway_hostname);
      if (fs != null) {
        byte[] bitmap = fs.getLocalCachedBlocks(path);
        int sum_caches = 0;

        if (bitmap != null) {
          for (int i = 0; i < bitmap.length; i++) {
            if (bitmap[i] == 1) {
              sum_caches++;
            }
          }
        }

        LOG.info("UserGateway : " + gateway_hostname + " has " + sum_caches + " caches of " + path);

        HSyndicateUGMonitorResults<byte[]> result =
            new HSyndicateUGMonitorResults<byte[]>(gateway_hostname);
        result.setResult(bitmap);

        bitmaps.add(result);
      }
    }
    return bitmaps;
  }
 @Override
 public synchronized void close() throws IOException {
   this.usergateway_hostnames.clear();
   for (SyndicateFileSystem fs : this.syndicateFSs.values()) {
     fs.close();
   }
   this.syndicateFSs.clear();
 }