I haven’t looked at the code too closely yet, but why the need for ListenableFuture to get
the response from the bus? JMS/messaging is already asynchronous.
On Jan 16, 2015, at 11:58 AM, John Mazzitelli <mazz(a)redhat.com>
wrote:
I have no idea if this is relevant, but in the hawkular-bus API, we now have
ListenerFuture being used to support async-RPC messaging.
https://github.com/hawkular/hawkular-bus/blob/master/hawkular-bus-common/...
Send a given message to the bus via sendRPC(), tell it what type of message to expect in
return, and you'll get a ListenableFuture back which you can use to obtain the
response asyncyronously from the bus.
----- Original Message -----
> I don’t think it necessary to add a ticket for such a small change. I am glad
> you mentioned the REST handler code. To be honest, I am not sure. With the
> driver, I do know from experience that if you start blocking I/O threads
> with work that takes a non-trivial amount of time, you are going to start
> seeing client side timeouts. An I/O thread services multiple requests
> concurrently. For the REST handler code, we ought to investigate whether or
> not it would be better to perform the transformations on a separate thread.
>
>> On Jan 16, 2015, at 10:48 AM, Thomas Segismont <tsegismo(a)redhat.com>
wrote:
>>
>> Sorry I overlooked the metrics-core code.
>>
>> Indeed, almost every call where a ListenableFuture returned by the C*
>> driver is involved uses the overloaded version (with the metricsTasks
>> ListenableExecutor instance).
>> Should I open a JIRA for the few places where it's missing?
>>
>> My understanding from you reply is that:
>> * all transformations on ListenableFuture returned by the C* driver should
>> happen in a thread of the metricsTasks pool
>> ==> use the overloaded version
>> * subsequent transformations may happen on the metricsTasks thread or on
>> the thread executing the rest handler code
>> ==> use the base version
>> Is that correct?
>>
>> Thanks
>>
>> Le 16/01/2015 14:23, John Sanda a écrit :
>>> In the metrics code, at least where a response from the C* driver is
>>> involved, the versions that take an executor is used almost everywhere.
>>> We do not want to block I/O threads doing work so in general it is best
>>> to use the overloaded versions of the methods.
>> B>
>>>> On Jan 16, 2015, at 4:47 AM, Thomas Segismont
<tsegismo(a)redhat.com>
>>>> wrote:
>>>>
>>>> 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/co...
>>>>
>>>> _______________________________________________
>>>> Hawkular-dev mailing list
>>>> Hawkular-dev(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/hawkular-dev
>>>
>>
>
>
> _______________________________________________
> hawkular-dev mailing list
> hawkular-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hawkular-dev
>
_______________________________________________
hawkular-dev mailing list
hawkular-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hawkular-dev