Explains how to manage jobs from the app monitor.

In the app monitor in section Jobs it is possible to see which jobs are running as well as those that are in different statuses like pending or finished.

Background jobs are of different types and are created as a consequence of some operations executed in the app runtime. For example the following things will trigger background jobs:

  • Execute an action in the background
  • An event coming from an endpoint
  • Export/import records

You can monitor jobs in charge of these operations from the app monitor. There you will be able to see the status, progress as well as logs.

This is the information you can see for a job:

  • Create date: when the job was created.
  • Waiting: how much time happened since it was created until execution started. If it is still in pending this value will grow.
  • State date: when the job execution started.
  • Duration: how long the job took to complete execution since start date. If it is still in progress this value will grow.
  • Status: the current status of the job. It could be <p>PENDING, RUNNING, FINISHED, STOPPING, STOPPED, CANCELING, CANCELED</p> .
  • Errors: indicate if there were errors during the execution of the job. If there are errors you should check the job’s logs to see what happened.
  • Low priority: if this job is flagged as low priority. See below for more information on how to make a job low priority.
  • Run by: which user triggered this job. Could be empty if it is a system job.
  • Progress: indicates the progress of the job. Some jobs might not update this accurately, so it is just an estimation.
  • Children execution: indicates the progress in the execution of children jobs (if there are children jobs). Keep in mind that more children jobs could be created, so progress could be adjusted.

Operations over jobs

There some operations available for jobs that you can apply from there (after selecting the affected jobs):

  • Stop: this will try to gracefully stop the job if it is running. Once the job is stopped it would be possible to resume it. Keep in mind that this could take a while if the job in some cases because we try to leave things in a good state so they can be resumed. Some jobs cannot be stopped at the middle of the execution. For example a job to execute a listener cannot be stopped because the script cannot be stopped in the middle. If you try to stop a job like that it will be in status Stopping until it is completed. Finally there are some system jobs where the option to stop them is not available.
  • Resume: if the status of the job is Stopped you can resume execution with this operation. It will pick up execution from where it was left.
  • Force stop: if the status of the job is Stopping you can force it to stop. Keep in mind that you should only do this if you are sure there is no other alternative as some data might be left inconsistent.
  • Cancel: if you cancel a job that is in Stopped, the job will be discarded and cannot be resume later.
  • Restart: if a job is Finished but for some reason you need to re-execute it, you can use this operation. It is only available on some types of jobs.
  • Set low priority: sets a job to be low priority. This means that the job will only be executed if there isn’t much load on the app.
  • Remove low priority: removes the low priority flag so the job is executed a usual.

Logs

For each job you will be able to see its logs. These are logs specific to the execution of the job.

Searching and filtering logs works exactly the same way as app logs.

Children jobs

If during the execution of a job other jobs are triggered, these are children jobs. This is important not only to clean up the main list of jobs but will have consequences in the scheduling of jobs.

The scheduler will assign execution time per root jobs (jobs that do not have a parent). This avoid that one job with a lot of children jobs blocks other jobs.

System jobs

In the secondary there is a button named Show system jobs. If you click there you will system jobs in the listing. These jobs are generated by the platform in order to carry on some of the needed tasks. For example refactorings of data, automatic update of relationship fields, etc.

Usually you won’t need to look at system jobs, but you can check them out if needed.

Statistics

In the section Jobs > Statistics in the app monitor you can see some useful information about jobs execution over time:

  • Number of creations: this is the number of jobs created. It allows to detect any anomaly in your app.
  • Average waiting time: this is the average amount of time a job is waiting before it gets executed. If this number goes up it means there is a performance issue. If this persists, you probably need to add more instances to your app.
  • Min waiting time: the minimum waiting time a job was waiting before being executed.
  • Max waiting time: the maximum waiting time a job was waiting before being executed.
Back to top