[infinispan-dev] Infinispan DEF - Custom parameters upon a failover

Galder Zamarreño galder at redhat.com
Tue Jul 2 02:56:51 EDT 2013


On Jun 26, 2013, at 8:00 PM, Strahinja Lazetic <lazetics at 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 at redhat.com>
> To: Strahinja Lazetic <lazetics at yahoo.com> 
> Cc: infinispan -Dev List <infinispan-dev at 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 at 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 at redhat.com>
> > To: Strahinja Lazetic <lazetics at yahoo.com>; infinispan -Dev List <infinispan-dev at 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 at 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 at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/infinispan-dev
> > 
> > 
> > --
> > Galder Zamarreño
> > galder at redhat.com
> > twitter.com/galderz
> > 
> > Project Lead, Escalante
> > http://escalante.io
> > 
> > Engineer, Infinispan
> > http://infinispan.org
> > 
> > 
> 
> 
> --
> Galder Zamarreño
> galder at redhat.com
> twitter.com/galderz
> 
> Project Lead, Escalante
> http://escalante.io
> 
> Engineer, Infinispan
> http://infinispan.org
> 
> 
> 
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


--
Galder Zamarreño
galder at redhat.com
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org




More information about the infinispan-dev mailing list