Hello support,
we receive the above error sending two large dataset (>10 Gb) residing on virtual tapes using Dataset Pipes. Here below the jcl used:
//RUNCOZ EXEC PROC=COZPROC,
// ARGS='myuser§myremote_linux'
//INPUT1 DD DISP=SHR,DSN=first.large.dataset
//INPUT2 DD DISP=SHR,DSN=second.large.dataset
//STDIN DD *
# open filedescriptors
exec 3< <( fromdsn -b //DD:INPUT1 )
exec 4< <( fromdsn -b //DD:INPUT2 )
# process files
/usr/bin/myscript.sh parm1 parm2
rc_runimp=$?
# close filedescriptors
exec 3>&-
exec 4>&-
if test $rc_runimp -ne 0; then
exit 8
fi
Error messages on SYSOUT shows:
CoZLauncher[N]: version: 2.4.4 2014-03-18
CoZLauncher[N]: Copyright (C) Dovetailed Technologies, LLC. 2006-2013. All rights reserved.
cozagent[N]: version: 1.1.2 2013-03-19
fromdsn(DD:STDIN)[N]: 12 records/960 bytes read; 253 bytes written in 0 milliseconds.
cozagent [10:41] Waiting for completion...
cozagent [10:46] Waiting for completion...
fromdsn(DD:INPUT1)[E]: ./OutputMux.h(146) - send_fully(1, 15C07028, 4) - [140] EDC5140I Broken pipe. (errno2=0x76697242)
cozserver(4)[E]: ./OutputMux.h(146) - send_fully(1, 15943330, 5) - [140] EDC5140I Broken pipe. (errno2=0x76697242)
cozserver(4)[W]: Exception: 103 sending exit code packet(rc=103) to client
todsn(DD:STDOUT)[N]: 75430 bytes read; 797 records/74667 bytes written in 811.452 seconds (92.957 Bytes/sec).
todsn(DD:STDERR)[N]: 438 bytes read; 5 records/433 bytes written in 811.472 seconds (0.540 Bytes/sec).
CoZLauncher[N]: myuser§myremote.linux target command '<default shell>' ended with RC=0
Using ssh-tunnel=false the problem is solved, but the management requires data encryption even within the enterprise.
So the question is how can I make Dataset Pipes work in this case (assuming the problem lies there, and not in the Launcher, or in the target Toolkit)
keeping encryption on.
Kind regards,
Valter Marguccio
exit code packet(rc=103) to client
Re: exit code packet(rc=103) to client
I believe that when you use process redirection that the pipes are closed after the statement where they appear. I've never seen process redirection used with exec n<, but in your case what is probably happening is the background fromdsn processes are finishing before the processing script.
I can't figure out why ssh-tunnel=false would change how this fails, but perhaps it is timing related.
I would also expect that you should be getting some error messages on STDERR from the target fromdsn-client commands. What are they?
I also recommend that you install current versions of Co:Z Toolkit on z/OS and the target system. There have been several fixes that you will want to have, although I don't think that they are necessarily related to your problem.
See: http://dovetail.com/docs/cozinstall/changes.html
Assuming that your script can be changed to accept file name arguments instead of using fd3 and fd4, I believe that you want, which is much simpler is:
In above, the <(fromdsn ...) args will be substituted by bash to be something like /dev/fdn which will be a named pipe file connected to fromdsn.
I can't figure out why ssh-tunnel=false would change how this fails, but perhaps it is timing related.
I would also expect that you should be getting some error messages on STDERR from the target fromdsn-client commands. What are they?
I also recommend that you install current versions of Co:Z Toolkit on z/OS and the target system. There have been several fixes that you will want to have, although I don't think that they are necessarily related to your problem.
See: http://dovetail.com/docs/cozinstall/changes.html
Assuming that your script can be changed to accept file name arguments instead of using fd3 and fd4, I believe that you want, which is much simpler is:
Code: Select all
//RUNCOZ EXEC PROC=COZPROC,
// ARGS='myuser§myremote_linux'
//INPUT1 DD DISP=SHR,DSN=first.large.dataset
//INPUT2 DD DISP=SHR,DSN=second.large.dataset
//STDIN DD *
set -o pipefail # a useful bash setting
# process files
/usr/bin/myscript.sh parm1 parm2 \
<( fromdsn -b //DD:INPUT1 ) \
<( fromdsn -b //DD:INPUT2 )
if test $? -ne 0; then
exit 8
fi
Re: exit code packet(rc=103) to client
Here is what STDERR shows:
Picked up _JAVA_OPTIONS: -Djava.io.tmpdir=/srv/imp/spool/32769a1cfcc11f562e09f45c88bbcaa98c3a34f5/_temp
fromdsn-client(21312)[E]: handleCmdIO: error: EOF after receiving partial packet from CoZServer
fromdsn-client(21312)[E]: Error: no exit code received from CoZServer
fromdsn-client(21314)[E]: handleCmdIO: error: EOF after receiving partial packet from CoZServer
fromdsn-client(21314)[E]: Error: no exit code received from CoZServer
we'll modify the STDIN as suggested by you and we'll give it another try.
I'll keep you posted on this. Meanwhile, thanks very much.
Valter Marguccio
Picked up _JAVA_OPTIONS: -Djava.io.tmpdir=/srv/imp/spool/32769a1cfcc11f562e09f45c88bbcaa98c3a34f5/_temp
fromdsn-client(21312)[E]: handleCmdIO: error: EOF after receiving partial packet from CoZServer
fromdsn-client(21312)[E]: Error: no exit code received from CoZServer
fromdsn-client(21314)[E]: handleCmdIO: error: EOF after receiving partial packet from CoZServer
fromdsn-client(21314)[E]: Error: no exit code received from CoZServer
we'll modify the STDIN as suggested by you and we'll give it another try.
I'll keep you posted on this. Meanwhile, thanks very much.
Valter Marguccio