Mindoo Blog - Cutting edge technologies - About Java, Lotus Notes and iPhone

  • Domino crashes with "CheckTheProcesses" message - explanation and workaround for dev environments

    Karsten Lehmann  13 July 2022 10:10:42
    Since Domino 8.5.3, there is a built-in facility that checks if all server processes are running. When the server detects that one has disappeared/crashed, the server triggers an NSD to document this event and crashes/restarts.

    In general, this is a clean approach to keep the server in a consistent state.

    But when you develop Java applications against the Domino Server's Java API, those Java processes are treated as child processes and monitored as well
    It's important to develop the applications in a clean way, so every Thread accessing Domino objects should be initialized with NotesThread.sinitThread() and properly uninitialized with NotesThread.stermThread().

    To ensure that this is also the case when errors occur in code, use try/finally:

    NotesThread.sinitThread();
    Session session = null;
    try {
       session = NotesFactory.createSession();
       // do something with the session object
    }
    catch (NotesException e) {
       e.printStackTrace();
    }
    finally {
       if (session!=null) {
          try { session.recycle(); } catch (NotesException e) {e.printStackTrace();}
       }
       NotesThread.stermThread();
    }

    This works in general, but often during development, you step through the code in debugger and just stop its execution, which produces this annoying result:

    Image:Domino crashes with "CheckTheProcesses" message - explanation and workaround for dev environments

    Fortunately it is possible disable the automatic Domino crash/restart with this Notes.ini variable:

    NO_TERM_EXIT_NO_PANIC=1

    The server still complains about the missing child process, but keeps on running.

    Of course, it would be even better if there was a way to exclude specific processes/process names from the monitoring.