The TimeXtender Scheduler Service runs scheduled execution packages in a given environment. The Scheduler service requires a dedicated service instance with a unique service user for each environment in which you'd like scheduled execution packages to run. To run these packages, the Scheduler starts a copy of TimeXtender.exe in the background using the permissions and configuration settings of its associated service user.
The service itself checks every 2 minutes to see if an scheduled execution is available. Also if a execution is set to run at 09:00 it will also allow it to start at 09:02.
What rules do I need to consider when scheduling execution packages?
The TimeXtender Scheduler Service checks for scheduled execution packages for every project in its environment every two minutes. When it makes this check, it applies two restrictions:
- The service only runs one execution package per project per check
- The service will not start an execution package if a previously scheduled execution of that package, or any package in that project is still running.
If multiple execution packages are scheduled to run in a single project at a specific time, only one of the packages will start. There is no way to reliably control which package will run in this situation. For this reason, we recommend not scheduling packages to run at exactly the same time. If you want to schedule multiple packages in a single project to run in parallel, you must deconflict them and put them in different projects.
Schedule deconfliction and parallel processing
Space out start times
The easiest way to avoid a conflict is to space out your execution package's scheduled start times. You can reliably avoid a start time collision by scheduling your execution package to start minimum five or more minutes apart. In that case, the Scheduler service will start each package in succession. If you have multiple scheduled packages in a project and the first package takes more than five minutes to run, only one package will run. If you have multiple projects with execution packages, multiple execution packages will run at once.
Call packages from separate projects
If you need more than one execution package to run at the same time, you can create a new "Ghost" project for each additional package you need to schedule. By adding an execution package from your main project as an external execution step, you can sidestep the limit of one package per project per time by calling each package from a different project. You still need to space out the executions with a minimum of at least 5 minutes.
Note: Newer versions of TimeXtender allow configuring multiple packages to run concurrently (edit Execution Package and go to Concurrent packages tab):
Warning: Even if packages from separate projects are running at the same time (or Concurrent packages set to run in one project), ensure those packages are not operating on the same tables.
Avoiding accidental parallel execution
Please note that the check #2 - the check that looks for currently running packages - only applies to scheduled instances of an execution package. If you start a scheduled package manually, and the scheduler will not recognize it and both the manual and scheduled version of the execution may run at once. If you must manually execute a package with a schedule, it is often a good idea to disable the schedule for that package until the manual execution has completed in order to avoid having the executions overlap.