Hi Andrew, I done a quick Proof of Concept in to add a Azure BlobStore putBlob Async method:
https://github.com/SpandanThakur/jclouds/tree/AsyncPOC Important Classes to look at are: AzureBlobClient.java InvokeHttpMethod.java HttpCommandExecutorService.java (Have a look at this class to see how call back is assigned) BaseHttpCommandExecutorService.java In S3 proxy we would suspend the jetty thread, complete the future and then continue the thread. Though my example moves to java 8, I think we should be able to use guava and stay on current java version. Also we have not yet decided how many methods we want to make async. As far as benefits goes, we saw that the S3 proxy throughput is throttled by the number of threads in the jetty server. When load is greater than the jetty threads performance degrades. Where as when we move a async implementation we are able to scale to any load (till CPU becomes a bottle neck) using even one jetty thread. Even when the load is less than the number of jetty threads the async gives slightly better throughput and response times. I also wanted to know if you guys have any standard performance tests that you guys run? I could try running them on the POC. Please let me know if you guys feel that my approach is correct and if this will benefit jClouds overall. Regards, Spandan