Currently S3AFilesystem.delete() only updates the delete at the end of a paged delete operation. This makes it slow when there are many thousands of files to delete ,and increases the window of vulnerability to failures
- after every bulk DELETE call is issued to S3, queue the (async) delete of all entries in that post.
- at the end of the delete, await the completion of these operations.
- inside S3AFS, also do the delete across threads, so that different HTTPS connections can be used.
This should maximise DDB throughput against tables which aren't IO limited.
When executed against small IOP limited tables, the parallel DDB DELETE batches will trigger a lot of throttling events; we should make sure these aren't going to trigger failures