protected <T extends StorageOwner> void applyBulkOperation(Iterable<? extends T> storages, ThrowableConsumer<? super T, IOException> action) throws IOException{
    IOException exc = null;
    for (T child : storages) {
      if (child != null) {
        try {
          action.consume(child);
        }
        catch (IOException e) {
          LOG.info(e);
          if (exc == null) {
            exc = e;
          }
        }
        catch (Throwable e) {
          LOG.info(e);
        }
      }
    }
    if (exc != null) {
      throw exc;
    }
  }
protected <T extends StorageOwner> void applyBulkOperation(Iterable<? extends T> storages, ThrowableConsumer<? super T, IOException> action)