Page 1 of 1

ds_seqput: error in 'write()' - Error 0

Posted: Wed Apr 09, 2008 9:10 am
by balajimadhav
Hi,

I am using sequential stage (Pipes enabled) in my job which will write and read the records. Then using CRC32 function the checksum is generated and the generated checksum will be updated in my target. The pipe file is split in the job so that the sequential file / pipe stage is represented as 2 objects on the DS canvas. I am getting the following eror

ds_seqput: error in 'write()' - Error 0

The job runs in a multiple instance (eg: 7 instances) and it is working fine for 6 six instances but throws error for only one instance.
I searched a lot from the forum and below are my observations

1) There may be an issue in the file memory exceeding the limit defined
2) or there may be server overload

I could find the server is not overloaded and through df -k command i could find there is no issue with file space.

I am creating the file by mkfifo in before job routine with permission 666.When i trigger the job again its failing . when i tried using to open the file using cat command and do a ctrl+Z and then run the job its running fine even though i remove the file and create it (before job routine rm and mk fifo)

This error is frequent and i am looking forward a solution for such scenarios. Also i would like to know what could be the reason why the job is executing fine when i do a cat command followed by ctrl+z?

Posted: Wed Apr 09, 2008 3:06 pm
by ray.wurlod
Writing to a pipe can fail if the pipe itself becomes full - the reader process is draining data from the pipe more slowly than the writer process is sending data into the pipe.

Posted: Wed Apr 09, 2008 3:38 pm
by balajimadhav
Thanks Ray. But how can i validate that this could be the problem and any solution for this? do i need to change any time out setting parameters? Currently my 'Wait for writer timeout' and 'Read timeout' is set to zero in the pipe stage. Also could you please let me know the usage of the above two options?

Posted: Wed Apr 09, 2008 4:38 pm
by ray.wurlod
0 means "infinite wait" but that does not directly affect the current problem. Timeout allows the reader process to conclude that no more rows will be arriving or the writer process to conclude that the reader process has died. You might try setting the writer timeout to a finite value, say two minutes. If it times out, then the reader process isn't reading, or isn't reading fast enough.