Abnormal Stage Termination error *Unique*

Post questions here relative to DataStage Server Edition for such areas as Server job design, DS Basic, Routines, Job Sequences, etc.

Moderators: chulett, rschirm, roy

Post Reply
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Abnormal Stage Termination error *Unique*

Post by vivekgadwal »

Gurus,

In one of our schedules, one particular job is aborting with "Abnormal Termination of stage <jobname>.XFM". This is the transformer stage that is aborting and it is spitting out NO other errors. I have tried searching the forum in vain. If I am resetting the job, it is not giving any "From Previous run..." messages in the log and running again would FAIL.

My job design is as follows:
Source is a staging table in DB2. There are two targets, one is a DB2 table (Inserts only) and the other is a sequential file. I also have two lookups (Hash Files). There is a constraint in the transformer (to send records into the DB2 target table) that sends only the rows that are NOTFOUND in either of the two lookups [NOTFOUND(lkup1) or NOTFOUND(lkup2)]. There are no constraints for the flat file. The lookup is being performed on two hash files, which have 5 key columns and one non-key column which is the value considered into one of the fields when there is a hit on the lookup.

This job ran fine before when there was only one lookup. There was an enhancement made to it and another lookup was added. It ran OK for a couple of runs (runs once every week) and then this error started occuring. The first time I spotted the error, I searched here, and couldn't find a satisfactory scenario. Then, I re-compiled the job and ran it. It ran fine for a couple of runs. The issue re-appeared and it is persisting for the past couple of weeks.

Please help!!
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

The entire error message will give a job number and a file name and, possibly, a line number or address. You can use this to inspect the source code generated by the Transformer stage. Since you elected not to post the complete error message it is impossible to assist further. You must ascertain what cause the termination.

Try replacing the NOTFOUND link variable with an IsNull() test on a reference input key column. NOTFOUND is sometimes unreliable when used with something other than a hashed file servicing the reference input.
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

I've found that NOTFOUND is always unreliable when used with anything other than hashed files as a reference input. :wink:
-craig

"You can never have too many knives" -- Logan Nine Fingers
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Post by vivekgadwal »

chulett wrote:I've found that NOTFOUND is always unreliable when used with anything other than hashed files as a reference input. :wink:
Thanks for the replies Ray and Craig.
There is nothing else in the error message than what I posted. As a matter of fact, this "Abnormal termination of <jobname>.XFM" comes as a warning. That is it. The next message in the Director after this warning is "Job <jobname> aborted." :(

I do not know how to look into the source code generated by the transformer stage. I tried pasting the warning message screenshot, but couldn't do that! There is this Event # (which is given as 72 for this warning), but it seems more like a sequence number for the logs.

Also, reg. the usage of NOTFOUND, I am using that for Hash file references only. There are two Hash files out of which I am looking up values and I have used NOTFOUND(lkup1) OR NOTFOUND(lkup2) condition as the constraint.

If there is any more info you require in order to move forward, let me know. I will post it asap. Thanks, in advance, for all your help
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

Just copy the relevant portion of the log message(s) to your clipboard then include it/them here as text, no need for a screenshot.
-craig

"You can never have too many knives" -- Logan Nine Fingers
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Post by vivekgadwal »

chulett wrote:Just copy the relevant portion of the log message(s) to your clipboard then include it/them here as text, no need for a screenshot.
The reason I wanted to include a screenshot was to show that there is nothing else to the error message than what I posted here. Anyways, I followed your suggestion and copied the warning message and it goes like this:

Abnormal termination of stage InsCpsClaimAdj..XFM detected

"InsCpsClaimAdj" is the job name! The next message is:

Job InsCpsClaimAdj aborted.

Thanks.
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

In Administrator client command window

Code: Select all

SELECT NAME,JOBNO FROM DS_JOBS WHERE NAME = 'InsCpsClaimAdj';
That will give you the job number. On the server look in a directory called RT_BPnnn, where nnn is that job number. A file whose name ends in TRANSnn is the source code generated by the Transformer stage.

How many rows had been processed before the abort occurred?
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Post by vivekgadwal »

ray.wurlod wrote:In Administrator client command window

Code: Select all

SELECT NAME,JOBNO FROM DS_JOBS WHERE NAME = 'InsCpsClaimAdj';
That will give you the job number. On the server look in a directory called RT_BPnnn, where nnn is that job number. A file whose name ends in TRANSnn is the source code generated by the Transformer stage.

How many rows had been processed before the abort occurred?
No rows are being processed. As soon as the job starts running, this warning message is appearing and it leads to the aborting. I have taken a look at the transformer generated code and I have no clue of what to look at. The warning message is not giving out any line number, as per your previous post!
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Post by vivekgadwal »

vivekgadwal wrote:
ray.wurlod wrote:In Administrator client command window

Code: Select all

SELECT NAME,JOBNO FROM DS_JOBS WHERE NAME = 'InsCpsClaimAdj';
That will give you the job number. On the server look in a directory called RT_BPnnn, where nnn is that job number. A file whose name ends in TRANSnn is the source code generated by the Transformer stage.

How many rows had been processed before the abort occurred?
No rows are being processed. As soon as the job starts running, this warning message is appearing and it leads to the aborting.
All,

I have done a workaround for this error/problem. I re-wrote the code for this particular job completely (without copying anything from the job that is causing the issues) and that has been running without any issues for two weeks now!
Thanks for your suggestions on this.
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Post by vivekgadwal »

Gurus,

I am afraid this issue started re-appearing again! Just to give a recap, initially the code was working fine. Then all of a sudden "Abnormal Termination of stage" warning started to pop-up. Then to resolve this I re-coded the job as it is and that started to work like a charm, until today. It aborted again with the same error.

Also as an FYI, this job runs as part of a weekly schedule through Control-M and this is fired in parallel with 9 jobs.
Any help appreciated.

Thanks.
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

You still need to try and reset the aborted job and see if anything shows up from the previous run. Also missed this in the first go-round:
vivekgadwal wrote:Also, reg. the usage of NOTFOUND, I am using that for Hash file references only. There are two Hash files out of which I am looking up values and I have used NOTFOUND(lkup1) OR NOTFOUND(lkup2) condition as the constraint.
That syntax is not valid if that is literally what you are using. It should be:

Code: Select all

ReferenceLinkName.NOTFOUND
And is a boolean. You can also Not() it to mean 'FOUND'.
-craig

"You can never have too many knives" -- Logan Nine Fingers
vivekgadwal
Premium Member
Premium Member
Posts: 457
Joined: Tue Sep 25, 2007 4:05 pm

Post by vivekgadwal »

chulett wrote:You still need to try and reset the aborted job and see if anything shows up from the previous run. .
Thanks for the reply Craig. The strange thing about this warning message is when I reset the job, it resets properly and it does NOT give out any error messages from previous run. Then when I go back and re-compile the job and run the schedule, it runs fine.

chulett wrote:Also missed this in the first go-round:
vivekgadwal wrote:Also, reg. the usage of NOTFOUND, I am using that for Hash file references only. There are two Hash files out of which I am looking up values and I have used NOTFOUND(lkup1) OR NOTFOUND(lkup2) condition as the constraint.
That syntax is not valid if that is literally what you are using. It should be:

Code: Select all

ReferenceLinkName.NOTFOUND
And is a boolean. You can also Not() it to mean 'FOUND'.
The NOTFOUND way I was quoting in my previous post is just as an explanation. In the code itself it is coded as:

Code: Select all

NOT(LkupSk.NOTFOUND) or NOT(Lkup_All_SNs_CLAIM_HDR.NOTFOUND)
In fact, I should have put FOUND in the previous explanation. I apologize for the confusion.
Vivek Gadwal

Experience is what you get when you didn't get what you wanted
2ksaint
Participant
Posts: 66
Joined: Sun Jan 20, 2008 11:15 pm

Post by 2ksaint »

im also facing the same issue, do vivek got any resolution for this issue.
Please let me know....
Post Reply