You may call in a Scalaris shell
admin:number_of_nodes().
admin:check_ring(). % should return ok
admin:check_ring_deep(). % should return ok
You can also take a look into the web interface at localhost:8000 on the
'Indexed Ring' tab. If the successorlists contain red entries, the ring
is not yet fixed (if you have still more than a single node).
> Is the failure in the test suite expected?
Yes. We know that the test fails. There is still a bug in the data
handover when nodes join and leaves that occurs under relatively rare
circumstences. We are working on that. A second reason is, that the
old transaction implementation cannot handle the data handover. We
will not fix that, but will get rid of the old tx implementation as
the new one now supports failures during tx execution itself.
> Is {die} the right way to kill a node to test recovery?
You may do that, yes. Another way is to start a node in a separate
erlang vm (with bin/cs_local.sh for example) and then kill this vm by
pressing Ctrl-C Ctrl-C.
Florian
[Roger Critchlow]
> Hi --
>
> I'm at a point where my application wants to test itself by losing part of
> the DHT ring and recovering from the failure. I'm running my modifications
> on top of the scalaris svn pulled this morning.
>
[ ... ]
> Is the ring recovered or not?
You may call in a Scalaris shell
admin:number_of_nodes().
admin:check_ring(). % should return ok
admin:check_ring_deep(). % should return ok
I just fixed an issue with our failure detectors that *might* have
caused also your error. Can you reproduce the wrong behaviour? Could
you please test with svn rev. 1624?
Florian
> Hi Florian --
>
> Thanks for the suggestions, but none of that really helped.
>
> What I ended up doing, after much thrashing around, is polling all live
> nodes for all nodes listed in their routing tables. What I'm finding is
> that the dead node is still present in somebody's routing table an hour
> after it died. This is using the scalaris sources from this morning.
>
> But I also get the impression that someone is working on the problem. I
> hope it's high on the to do list.
>
> -- rec --
>
> --
> You received this message because you are subscribed to the Google Groups "scalaris" group.
> To post to this group, send email to scal...@googlegroups.com.
> To unsubscribe from this group, send email to scalaris+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/scalaris?hl=en.
>
Florian
Processes related to the node you send the {die} to were thus totally
unsynchronised and had different opinions about the own dht_node's pid (and
possibly more).
The routing table thus still propagated an old dht_node pid. It should have
been removed by the failure detector though.
The errors from the ?RT:check you've seen are probably happening in the rt
process of the killed node until a new dht_node has been started.
Could you test with r1630 again? there, a {die} message completely kills the
dht_node and all depending processes in an ungraceful way (use {leave} for
graceful leave).
Nico
> > Florian