[Hawkular-dev] [metrics] Looking for advice on ListenableFuture usage
Thomas Segismont
tsegismo at redhat.com
Fri Jan 16 04:47:40 EST 2015
Hi everyone,
I'm looking for advice on how to use Futures#transform[1] and friends
(#addCallback, #withFallback)
These methods all have an overloaded version which takes a JDK Executor
instance as additional argument.
When the base method is called, Guava will use the so-called
"sameThreadExecutor". Consequently, the code will be executed:
* by the caller thread, if the underlying Future has completed already
* otherwise, by the thread completing the underlying Future
When the overloaded method is called, Guava will submit tasks to the
provided executor.
In the metrics code right now, the base method is used almost
everywhere. Considering that in most cases it will take more time to get
the response from C* than to complete the REST Handler code, it's the
Datastax driver threads which will execute the chain of callbacks, down
to the call to javax.ws.rs.container.AsyncResponse#resume
Could that be a problem? I guess it's safe when callbacks only
transforms the data loaded. I'm not sure about the call to
AsyncResponse#resume.
Thoughts?
Thanks,
Thomas
[1]
http://docs.guava-libraries.googlecode.com/git-history/v16.0.1/javadoc/com/google/common/util/concurrent/Futures.html
More information about the hawkular-dev
mailing list