Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix (#220) ?
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Wed, 27 Feb 2019 13:49:06 +0000 (14:49 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Wed, 27 Feb 2019 13:49:06 +0000 (14:49 +0100)
commit9acedb4ebce15cd3399fcad4effb3fb79a0ee5ef
tree1f43b86ccc1bccf3fe377c25931396c089bedb69
parentf2572574976b4fee3c4dc79ea83c34ddcd5917d0
fix (#220) ?

If an actor ends right after a dsend, the Comm should not be canceled
to let the receiver a chance to catch it.

It was removed in Comm::cancel(), now it's not, and the destructor has
to be a bit more careful.

As the comm was canceled, if the receive is posted later, it nevers
find its matching send and may stall forever or timeout.

This changed the output of the chord example (using dsend), but I
suspect it was not so correct before with some dsend being canceled
and the corresponding receive ending on timeout.

This also highlighted an issue in Java. The cleanup function for dsend
is now called at the end of the simulation and get_current_thread_env
crashed (because the current thread is maestro).

Hopefully, this commit does not cause new leaks.
examples/s4u/dht-chord/s4u-dht-chord.tesh
src/bindings/java/jmsg.cpp
src/bindings/java/jmsg_task.cpp
src/kernel/activity/CommImpl.cpp