Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Revert "OOP is good, too"
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 27 Feb 2022 14:42:04 +0000 (15:42 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 27 Feb 2022 14:49:00 +0000 (15:49 +0100)
This reverts commit f4925bd65c467da9862149984960de961af0d6cc, that
breaks a java test (java_cloud_masterworker) in a way that is
particularly hard to debug. The JVM is not exactly valgrind-friendly.

Just do some small cosmetics in this area instead.

src/kernel/actor/ActorImpl.cpp

index 1b89c8b..817d2c1 100644 (file)
@@ -207,7 +207,15 @@ void ActorImpl::exit()
   if (waiting_synchro_ != nullptr) {
     waiting_synchro_->cancel();
     waiting_synchro_->set_state(activity::State::FAILED);
-    waiting_synchro_->post();
+
+    if (auto exec = boost::dynamic_pointer_cast<activity::ExecImpl>(waiting_synchro_)) {
+      exec->clean_action();
+    } else if (auto comm = boost::dynamic_pointer_cast<activity::CommImpl>(waiting_synchro_)) {
+      comm->unregister_simcall(&simcall_);
+    } else {
+      waiting_synchro_->finish();
+    }
+
     activities_.remove(waiting_synchro_);
     waiting_synchro_ = nullptr;
   }