Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

domain: Properly exit() on domain disposal #4045

Merged
merged 1 commit into from Sep 21, 2012

Commits on Sep 21, 2012

  1. domain: Properly exit() on domain disposal

    This addresses nodejs#4034.  There are two problems happening:
    
    1. The domain is not exited automatically when calling dispose() on it.
    Then, since the domain is disposed, attempting to exit it again will do
    nothing.
    
    2. The active domain is stored on process.domain.  Since thrown errors
    call `process.emit('uncaughtException', er)`, and the process is an
    event emitter with a `.domain` member, it re-enters the domain a second
    time before calling the error handler, pushing it onto the stack again.
    
    Thus, if the handler calls `domain.dispose()`, then the domain is now on
    the stack twice, and cannot be exited properly.  Since the domain is
    disposed, any subsequent IO will be no-op'ed, since we've declared that
    this context is done and best forgotten.
    
    The solution here is twofold:
    
    1. In EventEmitter.emit, do not enter the domain if `this===process`.
    2. Automatically exit the domain when calling `domain.dispose()`.
    isaacs committed Sep 21, 2012
    Copy the full SHA
    0400571 View commit details
    Browse the repository at this point in the history