Preparing for Java and Spring Boot Interview?

Join my Newsletter, its FREE

Monday, July 26, 2021

Difference Between ON HOLD and ON ICE Jobs in Autosys - Interview Question

Autosys is a job management and scheduling tool and widely used in Investment banks on UNIX or Linux based environments. Autosys is used to start Java process, takes backup of log files, stop Java process, cleaning and purging database, and will all sort of housekeeping jobs in Linux environment. Autosys system is made of Autosys server and Autosys clients, each server or box, which has services scheduled by autosys, requires autosys client to be installed on that. One of the key advantages of Autosys is that one job can depend upon another job, and can execute, depending upon, success and failure of parent job. Though Java developers are not asked a lot of interview questions, you might expect a few of them during your interview with Wall Street banks, Brokers or Financial institutions, which uses autosys.

This is more important for support people and must know if you are applying for a production support role in Investment banks, and often asked along with UNIX Interview questions and SQL query interview questions, which are key technical skills for support personnel.

In this article, we will take a look at one of the important and frequently asked Autosys Interview questions, the difference between ON HOLD and ON ICE jobs.

Though both ON HOLD and ON ICE command stops a job from executing, the difference comes into the picture, when they are OFF HOLD and OFF_ICE.

Before going into the differences between them, let's see what is ON_HOLD and ON_ICE job status in Autosys.

It's also important for both developer and support people to know how Linux works if that's the operating system your application is running. If you know more about the environment, you can better support and troubleshoot issues when they arise.

It's also important to have a good knowledge of the Linux command line and that's why I suggest every programmer read The Linux command line: A complete Introduction, the most comprehensive yet easy-to-read book on Linux commands.

What is ON_HOLD and ON_ICE Jobs in Autosys

Autosys Interview Questions  Difference between ON HOLD and ON ICE jobsAutosys server determines when to start a job, based upon certain starting conditions e.g. scheduled date and time, a meeting of starting conditions, if a job is inside a box then box must be in running state and the current status of the job is not ON_HOLD or ON_ICE.

So ON_HOLD, as the name suggests is just a way to stop a job from not executing. There is numerous reason when you want to put a job ON HOLD e.g. while upgrading binary or making a new relapse, you want to put all jobs, which starts services on hold.

Similarly, you can also put your autosys job into ON_ICE status, to stop it being started. Autosys will not run a job, which is either ON HOLD or ON ICE until it receives the event JOB_OFF_HOLD and JOB_ON_ICE respectively.

This is where the actual difference between ON HOLD and ON ICE comes into the picture, which we will see in next section. By the way, you can also FORCE START an OH HOLD Job.

Difference between ON ICE and ON HOLD jobs in Autosys

There are two notable differences between ON HOLD and ON ICE jobs, which dictate when to use them. When an ON_HOLD job is put off hold, it runs, if it's starting conditions are satisfied, while an ON ICE job will not run, after putting into OFF ICE, even if it's starting conditions are met. It will only run, when it's starting condition will reoccur.

For example, if you have a job which starts your Java services at 3.00 A.M., which was ON_HOLD, it will run as soon as you make OFF_HOLD and starting condition met, while in the case of ON ICE, it will only run on next day.

Another critical difference between ON_ICE and ON_HOLD comes in terms of dependent jobs. All dependent jobs of an ON_ICE job will execute as though ON_ICE job was succeeded while all dependent jobs of an ON_HOLD job will not run until that job is put on OFF hold.

This is the most important difference between them. In the case of box jobs, suppose you have 4 jobs inside a box jobs, and 3rd job depends upon the success of the 2nd job, which was put ON ICE, then when that box job is started, both first job and the 3rd job will start immediately because ON ICE makes the dependent job to run immediately.


  1.   Dependent jobs of ON_HOLD doesn't run, but dependent jobs of ON_ICE runs as it succeeded.
  2.  An ON_ICE job doesn't run, when it puts OFF ICE and starting condition met while ON_HOLD jobs run when you put it OFF HOLD and it's starting conditions met.
  3.  Dependent jobs of ON_ICE jobs, which is inside a box job, will run immediately once box job is started.

Here is also a nice slide highlighting key differences between ON_ICE and ON_HOLD Jobs in Autosys:

Difference between ON HOLD and ON ICE Autosys Jobs

That's all on the difference between ON HOLD and ON ICE job status in Autosys. Since many Java programmers, also do support on Investment banks, it's important to understand the basics of Autosys or any other job scheduling systems. A lot of production issues are caused due to the incorrect understanding of ON_HOLD and ON_ICE status, so be careful, while you are putting any autosys job ON_HOLD and ON_ICE until you have complete knowledge of dependent jobs and impact of stopping a job and running it later.

As I said, this is one on the most popular Autosys interview questions for both development and support jobs and almost 8 out of 10 times, you will face this question on Autosys interviews.


Gajendra S V said...

Could you please assist me to debug one issue.
Shell script has the java command to execute java class file(nohup java classname &)
If we execute manually it works fine but if it run from autosys it will start. Tried to print classpath,path every thing is same.

javin paul said...

@gajendra, you mean it will not start right? I guess it due to different user and environment variable setting, make sure you set every environment variable need by your script in the script itself to avoid dependency on external factor e.g. PATH, CLASSPATH etc.

Unknown said...

Thanks Javin for the well explaination

Post a Comment