On Jun 26, 2013, at 8:00 PM, Strahinja Lazetic <lazetics(a)yahoo.com> wrote:
Hi,
Sorry for a bit late response, I was very busy with some other stuff. I have some doubts
and comments on your suggestions:
>Well, but you wanted to have a setEnvironment that takes extra params, so I guess
you'll be calling at >some point, so can't you just cast the callable to your
own and call whatever setters you want? I'm >very weary of adding random parameter
to setEnvironment for "random" stuff :)
I am not sure where should I cast my Callable and call the setter from, upon a failover.
I mean, can use some of the existing DEF interfaces for it or do it deeper in the code?
DistributedTask has a reference to both the task's callable, and the tasks failover
policy, so that would be the starting point to link between the two. IOW, for the failover
policy to be able to call setEnvironment() on the DistributedCallable, it needs access to
it, which is granted via the DistributedTask. So, it'd be in the failover policy
callback that you'd call setEnvironment of your own callable. Yeah, you'll need a
cast.
To be able to plug this, you might need a custom ExecutorService (see
DefaultExecutorService) that uses a custom DistributedTaskBuilder to wire things to be
able to do what I say above.
>Maybe your distributed callable could have a reference to your
own failover policy and query it?
In a case that my Callable is running on a remote node, to achieve this I guess I would
have to make the failover policy Serializable and hold a remote reference to it, right?
And from the design point of view I am not sure whether it is good that the Callable is
aware of its failover policy.
The callable might not need to hold any reference to the failover policy, it's more
the opposite. The failover policy would need to know about the callable for which it
provides the policy.
I would appreciate any comment on this.
Best regards,
Strahinja Lazetic
From: Galder Zamarreño <galder(a)redhat.com>
To: Strahinja Lazetic <lazetics(a)yahoo.com>
Cc: infinispan -Dev List <infinispan-dev(a)lists.jboss.org>
Sent: Wednesday, May 29, 2013 9:59 AM
Subject: Re: [infinispan-dev] Infinispan DEF - Custom parameters upon a failover
On May 28, 2013, at 11:56 AM, Strahinja Lazetic <lazetics(a)yahoo.com> wrote:
> Hi Galder,
>
> thank you for your response. I can serialize the parameters that I passed in the
constructor upon first start, but they remain the same upon a failover and recreation of
the Callable, so I can not get any new info based on the failover.
Well, but you wanted to have a setEnvironment that takes extra params, so I guess
you'll be calling at some point, so can't you just cast the callable to your own
and call whatever setters you want? I'm very weary of adding random parameter to
setEnvironment for "random" stuff :)
> As I mentioned in my example (though maybe not very smart), how can I say to my
Callable that it does not start for the first time but rather it was restarted. Or any
other data that depends on the specific conditions of the failover (e.g. Callable needs to
know a new ip or port that was determined in the FailoverPolicy based on the available
targets...).
^ Maybe your distributed callable could have a reference to your own failover policy and
query it?
>
> Thanks,
> Strahinja Lazetic
>
>
> From: Galder Zamarreño <galder(a)redhat.com>
> To: Strahinja Lazetic <lazetics(a)yahoo.com>; infinispan -Dev List
<infinispan-dev(a)lists.jboss.org>
> Sent: Tuesday, May 28, 2013 10:58 AM
> Subject: Re: [infinispan-dev] Infinispan DEF - Custom parameters upon a failover
>
> Hi Strahinja,
>
> Glad to hear that you're using Infinispan in your master thesis :)
>
> I have some reservations about adding these methods.
>
> You can create a custom distributed callable, so why not pass in this info on
construction of the callable, and make sure it's serialized so these parameters are
available when these classes are sent to other nodes?
>
> Cheers,
>
> On May 27, 2013, at 6:51 PM, Strahinja Lazetic <lazetics(a)yahoo.com> wrote:
>
> > Hi,
> >
> > I am currently using Infinispan Distributed Execution Framework for my Master
thesis project and I am wondering if it is possible that a DistributedCallable receives
some custom parameters from the framework upon a failover, besides Cache instance and Set
of keys passed in the setEnvironment method. As a simplified example, a
DistributedCallable wants to know whether it was restarted or freshly started. If this is
not possible, does it make sense to add a new method to the DistributedTaskFailoverPolicy
which will return a user supplied parameters Map and then read it from the setEnvironment
method in the DistributedCallable? Here are the signatures of the methods I was thinking
off:
> >
> > In the DistributedTaskFailoverPolicy class:
> >
> > Map<Object, Object> getEnvironmentParameters()
> >
> > In the DistributedCallable class:
> >
> > setEnvironment(Cache<K, V> cache, Set<K> inputKeys, Map<Object,
Object> params)
> >
> > I was free to try to implement this and did not take to much time, so now I am
wondering if there was already a way to do something like this in the Infinispan DEF.
> >
> > Thank you in advance for your comments and suggestions.
> > Strahinja Lazetic
> > _______________________________________________
> > infinispan-dev mailing list
> > infinispan-dev(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
>
> --
> Galder Zamarreño
> galder(a)redhat.com
>
twitter.com/galderz
>
> Project Lead, Escalante
>
http://escalante.io
>
> Engineer, Infinispan
>
http://infinispan.org
>
>
--
Galder Zamarreño
galder(a)redhat.com
twitter.com/galderz
Project Lead, Escalante
http://escalante.io
Engineer, Infinispan
http://infinispan.org
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Galder Zamarreño
galder(a)redhat.com
twitter.com/galderz
Project Lead, Escalante
http://escalante.io
Engineer, Infinispan
http://infinispan.org