The DRMA wait() semantics are like that of the POSIX wait() routine. Only one call to wait() will get the notification. Other calls to wait() must remain blocked. Yes, this creates a race condition. Yes,
when a job finishes. So the test only waits for two jobs. Output from the test: <========================= starting test #41 (MT_SUBMIT_MT_WAIT) submitted job "85" submitted job "86" submitted job "87" submitted job "88" submitted job "89" submitted job "90" waited job "85" waited job "85" waited job "85" waited job "86" waited for last job waited job "86" waited for last job waited job "86" waited for last job successfully finished test #41 ============================>
If this test is supposed to wait for the six jobs either each thread wait for its "own" jobs (those submitted in the thread), or each thread waits six times for a DRMAA_JOB_IDS_SESSION_ANY.
With Dan's explanation, it looks more like the test case is wrong. In the above run, it should say "test failed" since all threads returned, but not all submitted jobs where waited. If the group agrees on Dan's statement, then we should change this. Peter.