Hi All,
I am using 4 datasets and a funnel stage to join all of them and then the transformer stage calling and external routine(C programming routine)
in the stage variable and load into ODBC stage to load in the table.
I am getting the below fatal and the job is aborting after inserting new records into table.
For example if from the source i am 3000 records then i its loading till 2000 in the table and aborting by below fatal'
node_node2: Fatal Error: Subprocess appears to be writing binary data as error messages.
65536 binary bytes written to stdout or stderr of a subprocess operator
main_program: The Section Leader on node node2 has terminated unexpectedly.
node_node1: Fatal Error: Subprocess appears to be writing binary data as error messages.
65536 binary bytes written to stdout or stderr of a subprocess operator
Can anyone please guide me on this.
I am new to parallel jobs dont know the root cause for this.
Parallel job execution abort
Moderators: chulett, rschirm, roy
Thanks Mahadev here is the C codemahadev.v wrote:Looks like a problem with the external c++ routine to me. What does this routine do? Copy paste the code here.
int get_mapping_code ( entry_cd,trans_acct_hist_cd,batch_cd,debit_credit_cd,security_adp_nbr,tran_total_amt,share_trans_qty,desc_sec_line1_txt,desc_trans_sec_txt )
char *entry_cd,*trans_acct_hist_cd, *batch_cd, *debit_credit_cd, *security_adp_nbr, *desc_sec_line1_txt, *desc_trans_sec_txt;
float tran_total_amt,share_trans_qty;
{
char *para[10][100];
int i = 0,k = 1,j,max_rules=0,flag=0;
int pos_val1,pos_val2;
float total_amt,qty;
char *delims = ",";
char *configpara[80];
char configInput[180];
strcpy((char *)para[0],(char *)entry_cd);
strcpy((char *)para[1],(char *)trans_acct_hist_cd);
strcpy((char *)para[2],(char *)batch_cd);
strcpy((char *)para[3],(char *)debit_credit_cd);
strcpy((char *)para[4],(char *)security_adp_nbr);
strcpy((char *)para[5],(char *)desc_sec_line1_txt);
strcpy((char *)para[6],(char *)desc_trans_sec_txt);
total_amt = tran_total_amt;
qty = share_trans_qty;
flag = 0;
i = 0;
strcpy(configInput,"178,2,entry_cd,=, ,trans_acct_hist_cd,=,A,");
printf("Line:%s",configInput);
configpara[0] = strtok(configInput, ",\n");
while(configpara != NULL) {
i++;
configpara = strtok(NULL, ",\n");
}
max_rules = atoi(configpara[k]);
/* Checking for 2 business rules */
if ( max_rules == 2 )
{
pos_val1 = get_position_param(configpara[k+1]);
pos_val2 = get_position_param(configpara[k+4]);
/*printf("para[pos_val1]:%s,configpara[k+3]:%s\n",para[pos_val1-1],configpara[k+3]);
printf("para[pos_val2]:%s,configpara[k+6]:%s\n",para[pos_val2-1],configpara[k+6]); */
if ( strcmp((char*)para[pos_val1-1],(char*)configpara[k+3]) == 0 )
{
if ( strcmp((char*)para[pos_val2-1],(char*)configpara[k+6]) == 0 )
{
flag = 1;
if ( flag == 1 )
return atoi(configpara[k-1]);
}
}
}/* End of conditions two */
return 99999;
} /* End of mapping code function */
/* Get the input position parameter. */
int get_position_param( configval )
char *configval;
{
if ( strcmp(configval,"entry_cd") == 0)
return 1;
if ( strcmp(configval,"trans_acct_hist_cd") == 0)
return 2;
if ( strcmp(configval,"batch_cd") == 0)
return 3;
if ( strcmp(configval,"debit_credit_cd") == 0)
return 4;
if ( strcmp(configval,"security_adp_nbr") == 0)
return 5;
if ( strcmp(configval,"tran_total_amt") == 0)
return 6;
if ( strcmp(configval,"share_trans_qty") == 0)
return 7;
if ( strcmp(configval,"desc_sec_line1_txt") == 0)
return 8;
if ( strcmp(configval,"desc_trans_sec_txt") == 0)
return 9;
}
-
- Premium Member
- Posts: 151
- Joined: Fri Feb 13, 2009 4:19 pm