Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The polling interval is a configuration variable that can be set in }APQ Settings cube and should be set to a reasonable value. Setting the value too low can lead to various locking situations, setting the value too high will cause delay the main process execution as the signal to continue with main process execution comes at periodic intervals.

Since there are no tools to control child threads from the main thread, the parallel processing algorithm implements two different timeouts for child thread monitoring to prevent main process stalling in the polling loops and thus having zombie processes running on the TM1 server.

First timeout thread initiation polling is used to monitor if all child threads have initiated correctly within a specified time period. Initiation is considered a successful completion of entire prolog part of the TI process.

Two types of exception exceptions can happen during this period:

  • The child thread will not initiate and will exit before it started processing data (for example due to a data source error).

  • The child thread has time related issues during its prolog initialization (for example due to infinite loop in the prolog code or a source view that calculates slowly).

In both cases the main thread will exit with error if any of child threads haven’t cleared the Scheduled flag and signalled Running status in }APQ C3 Thread Control cube within a thread initiation timeout as specified in }APQ Settings cube. Default value of the timeout is 600 seconds. Setting the value too low might cause timeout of processes that allocate bigger data volumes on the source view, setting the value too high might cause unnecessary delay in timeout detection.

The interval of polling is set in }APQ Settings and the same value is used for thread completion polling.

Note

Please note there are currently no tools available in TM1 version 11 for the main thread to kill any of the child threads when the timeout is reached and should this exception occur, you should kill all child threads manually before proceeding with any process retry.