Asynchronous proxies leak native threads to the DGC mechanism and eventually cause the HAJournalServer process to fail in a variety of interesting ways, including refusing to replicate an HALog file that in fact exists in the file system and which can be read. We can get a lot of leaked threads for sendHALog() when resynching a service. Too many for this to be practical.
We will need to use a ThickFuture and different mechanism to cancel the transfer. For example, a well known exception thrown back along the pipeline that is not stopped by the retrySend() logic in QuorumPipelineImpl or sending another message to cancel the transfer using a UUID (or the request object) for the transfer handle.
Uses of asynchronous proxies include:
If we retain the ability to have asynchronous proxies, at least rename the method and make getProxy()/2 private so we can tell at a glance the code paths that are using asynchronous proxies.