6321: Add note about rationale for retrying on OSError.
authorPeter Amstutz <peter.amstutz@curoverse.com>
Fri, 16 Oct 2015 15:40:36 +0000 (11:40 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Fri, 16 Oct 2015 15:40:36 +0000 (11:40 -0400)
services/nodemanager/arvnodeman/computenode/dispatch/slurm.py

index b4ed088e2169adbb1496f160539bf50194057e2d..ec5014e9f9cf1e8848353cf3c755e22875227850 100644 (file)
@@ -34,6 +34,14 @@ class ComputeNodeShutdownActor(ShutdownActorBase):
     def _get_slurm_state(self):
         return subprocess.check_output(['sinfo', '--noheader', '-o', '%t', '-n', self._nodename])
 
+    # The following methods retry on OSError.  This is intended to mitigate bug
+    # #6321 where fork() of node manager raises "OSError: [Errno 12] Cannot
+    # allocate memory" resulting in the untimely death of the shutdown actor
+    # and tends to result in node manager getting into a wedged state where it
+    # won't allocate new nodes or shut down gracefully.  The underlying causes
+    # of the excessive memory usage that result in the "Cannot allocate memory"
+    # error are still being investigated.
+
     @ShutdownActorBase._retry((subprocess.CalledProcessError, OSError))
     def cancel_shutdown(self):
         if self._nodename: