Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't create dependencies if both root and end are not connected to any task
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Wed, 17 May 2017 06:28:42 +0000 (08:28 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Wed, 17 May 2017 06:28:42 +0000 (08:28 +0200)
This happens when none of the actual jobs described in the DAX file
consumes and produces any file. In that case, root has no successor
and a dependency to end is created but end has no predecessor and a
dependency from root is created ... that already exists.

src/simdag/sd_daxloader.cpp

index 4a83abd..543cb63 100644 (file)
@@ -237,12 +237,14 @@ xbt_dynar_t SD_daxload(const char *filename)
       /* If some tasks do not take files as input, connect them to the root
        * if they don't produce files, connect them to the end node.
        */
-      if ((file != root_task) && file->inputs->empty())
-        SD_task_dependency_add(nullptr, nullptr, root_task, file);
-      if ((file != end_task) && file->outputs->empty())
-        SD_task_dependency_add(nullptr, nullptr, file, end_task);
+      if ((file != root_task) && (file != end_task)) {
+        if (file->inputs->empty())
+          SD_task_dependency_add(nullptr, nullptr, root_task, file);
+        if (file->outputs->empty())
+          SD_task_dependency_add(nullptr, nullptr, file, end_task);
+      }
     } else {
-       THROW_IMPOSSIBLE;
+      THROW_IMPOSSIBLE;
     }
   }