protected void tryUpdateTimestampsForParentDirectories(
      final List<URI> modifiedObjects, final List<URI> excludedParents) {
    logger.atFine().log(
        "tryUpdateTimestampsForParentDirectories(%s, %s)", modifiedObjects, excludedParents);

    // If we're calling tryUpdateTimestamps, we don't actually care about the results. Submit
    // these requests via a background thread and continue on.
    try {
      @SuppressWarnings("unused") // go/futurereturn-lsc
      Future<?> possiblyIgnoredError =
          updateTimestampsExecutor.submit(
              () -> {
                try {
                  updateTimestampsForParentDirectories(modifiedObjects, excludedParents);
                } catch (IOException ioe) {
                  logger.atFine().withCause(ioe).log(
                      "Exception caught when trying to update parent directory timestamps.");
                }
              });
    } catch (RejectedExecutionException ree) {
      logger.atFine().withCause(ree).log(
          "Exhausted thread pool and queue space while updating parent timestamps");
    }
  }
protected void tryUpdateTimestampsForParentDirectories ( final List < URI > modifiedObjects , final List < URI > excludedParents ) { logger . atFine ( ) . log ( "tryUpdateTimestampsForParentDirectories(%s, %s)" , modifiedObjects , excludedParents ) ; try { @ SuppressWarnings ( "unused" ) Future < ? > possiblyIgnoredError = updateTimestampsExecutor . submit ( ( ) -> { try { updateTimestampsForParentDirectories ( modifiedObjects , excludedParents ) ; } catch ( IOException ioe ) { logger . atFine ( ) . withCause ( ioe ) . log ( "Exception caught when trying to update parent directory timestamps." ) ; } } ) ; } catch ( RejectedExecutionException ree ) { logger . atFine ( ) . withCause ( ree ) . log ( "Exhausted thread pool and queue space while updating parent timestamps" ) ; } }
For each listed modified object, attempt to update the modification time of the parent
directory.

<p>This method will log & swallow exceptions thrown by the GCSIO layer.

@param modifiedObjects The objects that have been modified
@param excludedParents A list of parent directories that we shouldn't attempt to update.