code: void imageLoaded() throws IOException {
      for (Future<Void> task : cachingTasks) {
        try {
          task.get();
        } catch (InterruptedException e) {
          throw new IOException("FSDirectory cache received interruption");
        } catch (ExecutionException e) {
          throw new IOException(e);
        }
      }
      
      // will not be used after startup
      this.cachingTasks = null;
      this.cachingExecutor.shutdownNow();
      this.cachingExecutor = null;
      
      // process remaining inodes
      for(INode inode : cachingTempQueue) {
        cacheNameInternal(inode);
      }
      this.cachingTempQueue = null;
      
      this.imageLoaded = true;
    }
docs: Inform that from now on all caching is done synchronously.
  Cache remaining inodes from the queue.
  @throws IOException