16421: Merge branch 'master' into 16421-document-collection-deletion-lifecycle
[arvados.git] / lib / dispatchcloud / test / stub_driver.go
index 41eb20763c75248c6cea81a2e9854ad2dfde42a8..132bd4d695f0ef88095951b151be592029c31328 100644 (file)
@@ -274,13 +274,11 @@ func (svm *StubVM) Exec(env map[string]string, command string, stdin io.Reader,
                                svm.Lock()
                                defer svm.Unlock()
                                if svm.running[uuid] != pid {
-                                       if !completed {
-                                               bugf := svm.sis.driver.Bugf
-                                               if bugf == nil {
-                                                       bugf = logger.Warnf
-                                               }
-                                               bugf("[test] StubDriver bug or caller bug: pid %d exiting, running[%s]==%d", pid, uuid, svm.running[uuid])
+                                       bugf := svm.sis.driver.Bugf
+                                       if bugf == nil {
+                                               bugf = logger.Warnf
                                        }
+                                       bugf("[test] StubDriver bug or caller bug: pid %d exiting, running[%s]==%d", pid, uuid, svm.running[uuid])
                                } else {
                                        delete(svm.running, uuid)
                                }
@@ -305,7 +303,7 @@ func (svm *StubVM) Exec(env map[string]string, command string, stdin io.Reader,
                        time.Sleep(time.Duration(math_rand.Float64()*20) * time.Millisecond)
 
                        svm.Lock()
-                       killed := svm.running[uuid] != pid
+                       killed := svm.killing[uuid]
                        svm.Unlock()
                        if killed || wantCrashEarly {
                                return
@@ -345,21 +343,9 @@ func (svm *StubVM) Exec(env map[string]string, command string, stdin io.Reader,
        }
        if strings.HasPrefix(command, "crunch-run --kill ") {
                svm.Lock()
-               pid, running := svm.running[uuid]
-               if running && !svm.killing[uuid] {
+               _, running := svm.running[uuid]
+               if running {
                        svm.killing[uuid] = true
-                       go func() {
-                               time.Sleep(time.Duration(math_rand.Float64()*30) * time.Millisecond)
-                               svm.Lock()
-                               defer svm.Unlock()
-                               if svm.running[uuid] == pid {
-                                       // Kill only if the running entry
-                                       // hasn't since been killed and
-                                       // replaced with a different one.
-                                       delete(svm.running, uuid)
-                               }
-                               delete(svm.killing, uuid)
-                       }()
                        svm.Unlock()
                        time.Sleep(time.Duration(math_rand.Float64()*2) * time.Millisecond)
                        svm.Lock()