> + String marker = listing.getNextMarker(); > + if (marker != null) { > + logger.debug("%s with marker %s", message, marker); > + options = options.afterMarker(marker); > + listing = getListing(containerName, options, semaphore, > + outstandingFutures, deleteFailure); > + } else { > + break; > + } > + } > + } > + > + public void execute(final String containerName, > + ListContainerOptions listOptions) { > + final AtomicBoolean deleteFailure = new AtomicBoolean(); > + final int numOutStandingRequests = 1024;
Done. There is a configurable property called "jclouds.max-parallel-deletes" that can be used for this. You're point about whether the # of semaphores should be equal to the # of threads in the executorService is valid. The default value of "jclouds.max-parallel-threads" is equal to the # of user threads. Given that these two are equal, I thought about whether we need the extra config option. Can we just use the value of PROPERTY_USER_THREADS instead. However, I'm not sure if the executorService object injected into DeleteAllKeysInList is also being used somewhere else. If it is used somewhere, I guess, it would be good to have an option where the use can limit the number of parallel deletes being issued when deleting a container thereby limiting the number of threads being used from the executorService. Let me know if this isn't necessary. --- Reply to this email directly or view it on GitHub: https://github.com/jclouds/jclouds/pull/214/files#r10872420