[infinispan-dev] distributed execution - invoking commands on self
Vladimir Blagojevic
vblagoje at redhat.com
Mon Apr 11 14:18:39 EDT 2011
Hi,
I discovered a problem with distributed framework in cases where
Callables submitted for distributed execution contain mutable instance
fields. Just before Callable is dispersed across cluster it gets invoked
locally where instance fields of a submitted Callable can be possibly
mutated; Callable is in turn sent to remote nodes with mutated values
instead of "original" field values as submitted by user. For example,
consider pi approximation example from wiki [1]. If CircleTest Callable
declared insideCircleCount as an instance field instead of local field
of call method we would ultimately get a wrong final result.
Therefore we need to ensure that each Infinispan node gets an unmodified
instance of Callable for execution. I was looking at the possibility to
send command to self thus causing creation of a marshaled copy of a
Callable, pretty much like any other remote node receives it. However, I
was unable to invoke a command on self. Any way to do this? How about
invoking marshaling locally to create a Callable copy without going
through rpc invocation layer? I though about skipping master/self node
altogether but that's an easy way out;-)
Got suggestions, ideas?
Regards,
Vladimir
[1] http://community.jboss.org/wiki/InfinispanDistributedExecutionFramework
More information about the infinispan-dev
mailing list