The problem is that when your channel disconnects, you don't get a new
view. Experiments with HAPartition showed me that. You do get one when
it reconnects. Mainly the issue is to think through the implications of
that. Some initial thoughts:
1) While you're disconnected you can't properly replicate. What's the
proper behavior -- hold calls in ReplicationInterceptor until you
reconnect, which will happen automatically? Or throw exceptions when
you try to send messages on the channel (which I'd expect is what
happens now)? If the latter, it becomes important to have a way to
communicate to the application that the cache is disconnected, so the
application can decide whether or not to hold calls.
2) When the new view comes in after reconnect, does the node need to
reassign it's buddy and transfer state? During the period of broken
communication leading up to the shunning, the buddy probably wasn't
getting replication traffic. If REPL_ASYNC, the sender would not know
this. If we do need to reassign buddies, when the new view comes in
will the BR code recognize it needs to do this?
3) The channel is always AUTO_GET_STATE. So, when it reconnects
getState() will be called on the coordinator and setState() will be
called on the node. This is inappropriate in many configurations;
basically most of those that don't do an initial state transfer. See
http://jira.jboss.com/jira/browse/JBCACHE-805. If it is appropriate, do
we handle it properly?
3) Non-BR case with region-based marshalling. We definitely don't want a
single monolithic state transfer; won't be able to deserialize it. But,
we do need to re-transfer the state, as we're now out of sync with the
cache. Right now we don't do this.
A lot of similar issues apply in the merge case.
-Brian
Manik Surtani wrote:
Within JBC, how does this affect? Perhaps triggering a reorg
of budy groups? But this is done when a new view is issued anyway.
> Hi,
>
> The below issue pertains to JBC as well. Propagation of awareness of
> shunning to user code may be less of an issue, but internal
> awareness is important.
>
> Brian Stansberry (JIRA) wrote:
>> HAParititonImpl implements org.jgroups.ChannelListener
>> ------------------------------------------------------
>>
>> Key: JBAS-3753
>> URL:
http://jira.jboss.com/jira/browse/JBAS-3753
>> Project: JBoss Application Server
>> Issue Type: Feature Request
>> Security Level: Public (Everyone can see)
>> Components: Clustering
>> Affects Versions: JBossAS-4.0.4.GA, JBossAS-3.2.8.SP1
>> Reporter: Brian Stansberry
>> Assigned To: Brian Stansberry
>> Fix For: JBossAS-5.0.1.CR1
>>
>>
>> Currently if a JChannel is shunned and disconnects, higher level
>> services are unaware of this and can't take any remedial action.
>>
>> We need to do something like implement ChannelListener so an
>> HAPartition is aware when the events on the underlying channel
>> occur. Then devise a scheme to propagate some of the events to user
>> code. Preferably this will follow as much as possible the existing
>> notification scheme; i.e. pass a new view to HAMembershipListener
>> impls that doesn't include the current node.
>
>
>
> Brian Stansberry
> Lead, AS Clustering
> JBoss, a division of Red Hat
> Ph: 510-396-3864
> skype: bstansberry
>
> _______________________________________________
> jbosscache-dev mailing list
> jbosscache-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/jbosscache-dev