Hi Sharon and April,
This is a common question that comes up often. I am working on a tech document to address this, but here is a first draft. Feedback is appreciated for the final doc.
To answer your question one needs to understand what dSeries components are affected by a cold start. These are scheduler (anything to do with events), and the runtime (which refers to the active workload) in the system (mainly jobs and application).
What happens when the scheduler is cold started?
1. All timers associated with the scheduler is removed. Timers group events that should occur at the same time. For example, all the events that should be processed together (eg 10:00:00 AM) is stored in a single timer.
2. All data in ESP_TDR_DATA table is truncated. This essentially wipes out all scheduled event triggers.
What happens when a runtime (Distributed Manager) is cold started?
1. All incoming messages to be processed by distributed manger and all outgoing messages to be sent from the distributed manager are cleared from the database. These include messages to and from the Agents, or other internal dSeries components.
2. ESP_RT_WOB table is truncated. All active workload is lost. Jobs that were running on the Agent may complete, but manager would have lost track of it.
3. Any timers associated with the distributed manager are cleared. These included job’s time dependencies, external dependencies, ….
4. If the global.variables.cold.start set to true in (default is false) in runonce.properties, global variables are deleted.
5. All variable dependencies removed
6. All resources are reset to their initial values (run time values are lost).
7. If the global.variables.cold.start is set true (default is false) all invalid applications are removed from ESP_APPLICATION table.
8. All desktop client related data is truncated, including ESP_WSS_APPL and ESP_WSS_JOB table.
9. Status message tables are truncated.
Now what happens at each cold start level?
start.type.level = -2
Cold start the scheduler
Cold start the runtime
scheduleallevents command issued
start.type.level = -1
Cold start the scheduler
Cold start the runtime
scheduleallevents command issued
Application generation count for all applications is set to zero
start.type.level = 0
Cold start the scheduler
Cold start the runtime
start.type.level = 1
Cold start the runtime
Warm start the scheduler.
All scheduled events (ESP_TDR_DATA) are preserved and executed.
All active workload is lost (ESP_RT_WOB).
start.type.level = 2
Cold start the scheduler
Warm start the runtime
This preserves all active workload.
All scheduled events are lost.
start.type.level 1 and 2 are useful depending on what you want to achieve. If you want to preserver your active workload, then 1, if you want to preserve your events, then 2. Majority of the time, we end up performing cold start when we have a data corruption or poorly maintained database which has degraded in performance to a point where we cannot be recover. Your data will dictate which start level to choose.
Hope this explain the different cold start levels in more detail.
Best regards,
Pradeepan Gunabalasingam
Principal Support Engineer