Christopher Browne cbbrowne at afilias.info
Thu Mar 3 09:54:11 PST 2011
On Wed, Mar 2, 2011 at 9:25 AM, Steve Singer <ssinger at ca.afilias.info> wrote:
> Consider a three node cluster with nodes 1,2 and 3.
>
> I then issue the command.
>
> store node(id=4, event node=1);
> subscribe set(id=1,provider=2,receiver=4);
>
> Slonik needs to wait for the store node to propogate to node 2 before
> doing the subscribe set.   The problem is that node 2 does not yet have
> an sl_node entry for node 4.
>
> Slonik can't tell the difference between this case and
>
> store node(id=4,event node=1);
> #wait
> store node(id=5,event node=4);
> drop node(id=4,event node=2);
> subscribe set(id=1,provider=2,receiver=4);
>
> If slonik does not see an sl_node entry for a node 4 at node 2 how does
> it know if this is because the store node hasn't yet propogated or if
> the drop node has already blown away the data.
>
> Is this a problem for multi-node failover as well?

Hmm.  I wonder if this is a real problem.

If the slonik was submitted as follows, the problem never emerges:
store node(id=4, event node=2);
subscribe set(id=1,provider=2,receiver=4);

And I wouldn't feel completely badly if the original script
> store node(id=4, event node=1);
> subscribe set(id=1,provider=2,receiver=4);
complained about the unavailability of the provider.

I note an error with regards to that; subscribeset() should check for
the provider, and complain if it's not found.  It doesn't, which means
this case would *probably* fail with a foreign key violation.  Bug
#198 filed, with fix proposed...

In any case, the problem isn't likely to emerge if STORE NODE has an
implicit 'wait for event' which causes it to wait such that the event
*has* made it to node 2.  (Or 4?)

Seems to me you're looking a bit too hard for solutions here.


More information about the Slony1-hackers mailing list