Skip to content
This repository has been archived by the owner on Oct 16, 2021. It is now read-only.

AIX version fails with assertion on zombie cluster workers after master dies #21

Closed
gireeshpunathil opened this issue Feb 12, 2014 · 2 comments
Labels

Comments

@gireeshpunathil
Copy link
Member

Two test cases fail with similar errors:

test-cluster-master-error.js

bash-4.2$ ./node test/simple/test-cluster-master-error.js

assert.js:92
throw new assert.AssertionError({
^
AssertionError: The workers did not die after an error in the master
at process. (/home/gireesh/aix/node/test/simple/test-cluster-master-error.js:137:12)
at process.g (events.js:180:16)
at process.EventEmitter.emit (events.js:117:20)

test-cluster-master-kill.js:

bash-4.2$ ./node test/simple/test-cluster-master-kill.js

assert.js:92
throw new assert.AssertionError({
^
AssertionError: worker was alive after master died
at process. (/home/gireesh/aix/node/test/simple/test-cluster-master-kill.js:95:12)
at process.g (events.js:180:16)
at process.EventEmitter.emit (events.js:117:20)

@gireeshpunathil
Copy link
Member Author

The reason is a narrow timing window between the check on the existence of children processes and their actual termination, after they were killed. In the asynchronous non-blocking operational model, process.kill() just returns but leaves it to the target process to die. A timed (200 millis) callback installed at the master process finds the child process as dead in linux, but live in aix - simply because it needs little bit more time to die.

In short, the test cases exercise a boundary space between a target process being killed, and checking their liveliness.

@gireeshpunathil
Copy link
Member Author

Issue resolved through a change in the test case: nodejs/node#2891

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant