On 9 Jun 2011, at 15:26, Manik Surtani wrote:
We use partial state transfer not to generate partial state per
cache, but the entire state per cache, but since we have > 1 cache sharing a given
JGroups channel, as far as JGroups in concerned this *is* partial state of a node. I.e.,
the state of just 1 cache on a channel, not all the caches.
So we actually use cacheName as the state identifier (in JGroups'
ExtendedMessageListener).
But yes, there is no reason why we can't replace this with RPC as per Distribution,
however I think we do need a streaming solution - not just for replication but
distribution as well. As such I'd only want to re-implement this bit once, rather
than a temp RPC based solution first. So we need a mechanism to either:
Now this
might sound a bit too radical but do we really need REPLICATED mode?
This is not fully brewed, but if e.g. we set numOwners = Integer.MAX_INTEGER the cluster
is effectively in replicated mode, so can't we just drop the REPLICATION entirely?
This would reduce the code size significantly...
(1) open a separate TCP socket for the sake of streaming state, or
(2) reuse the sockets JGroups opens.
They both have their pros and cons.
(1) is more configuration, firewall setup, and a spiderweb of connections in a large
grid
(2) would mean multiplexing with JGroups' use of the socket.
Having our own
sockets might cause an administration complications. Also borrowing sockets from jgroups
doesn't seems nice...I'm not a fan of either solution really: I think this should
be transport's responsibility and we should enhance jgroups to offer the streaming
service.