try {
simgrid::s4u::this_actor::sleep_for(nb_sec);
- }
- catch(xbt_ex& e) {
+ } catch (simgrid::HostFailureException& e) {
+ status = MSG_HOST_FAILURE;
+ } catch (xbt_ex& e) {
if (e.category == cancel_error) {
XBT_DEBUG("According to the JAVA API, a sleep call should only deal with HostFailureException, I'm lost.");
// adsein: MSG_TASK_CANCELED is assigned when someone kills the process that made the sleep, this is not
{
for (;;) {
XBT_INFO(" I'm alive but I should sleep");
- MSG_process_sleep(10);
+ int res = MSG_process_sleep(10);
+ if (res == MSG_HOST_FAILURE) {
+ XBT_INFO("Host as died as expected, do nothing else");
+ return 0;
+ }
}
XBT_INFO(" I'm done. See you!");
return 0;
msg_task_t task = MSG_task_create("COMM", 0, 100000000, NULL);
MSG_task_dsend(task, mailbox, task_cleanup_handler);
// We should wait a bit (if not the process will end before the communication, hence an exception on the other side).
- try {
- MSG_process_sleep(30);
- } catch (simgrid::HostFailureException& e) {
+ int res = MSG_process_sleep(30);
+ if (res == MSG_HOST_FAILURE) {
XBT_INFO("The host has died ... as expected.");
}
XBT_INFO(" TX done");
> [Jupiter:process_daemon:(2) 2.000000] [msg_test/INFO] Execute daemon
> [Tremblay:test_launcher:(1) 3.000000] [msg_test/INFO] Turn off Jupiter
> [Jupiter:process_daemon:(2) 3.000000] [msg_test/INFO] Execute daemon
-> [Tremblay:test_launcher:(1) 13.000000] [msg_test/INFO] Test 1 seems ok, cool !(#Processes: 1, it should be 1; #tasks: 3)
+> [Jupiter:process_daemon:(2) 3.000000] [msg_test/INFO] Host as died as expected, do nothing else
+> [Tremblay:test_launcher:(1) 13.000000] [msg_test/INFO] Test 1 seems ok, cool !(#Processes: 1, it should be 1; #tasks: 4)
> [Tremblay:test_launcher:(1) 13.000000] [msg_test/INFO] Test done. See you!
> [13.000000] [msg_test/INFO] Simulation time 13
> [Tremblay:test_launcher:(1) 100.000000] [msg_test/INFO] Turn off
> [Jupiter:process_sleep:(2) 100.000000] [msg_test/INFO] I'm alive but I should sleep
> [Tremblay:test_launcher:(1) 100.000000] [msg_test/INFO] sleep for 10 seconds
+> [Jupiter:process_sleep:(2) 100.000000] [msg_test/INFO] Host as died as expected, do nothing else
> [Tremblay:test_launcher:(1) 10100.000000] [msg_test/INFO] number of Process : 1 it should be 1 (i.e. the Test one))
> [Tremblay:test_launcher:(1) 10100.000000] [msg_test/INFO] Test done. See you!
> [10100.000000] [msg_test/INFO] Simulation time 10100