Originally, I had:
$ cat /etc/passwd | head -n 1
root:x:0:0:root:/root:/bin/bash
$ echo ${PIPESTATUS[@]}
0 0

Ie, 'cat' exits success.

That is actually not true.  that specific example of 'cat' would never
get a broken pipe signal as it would read all of /etc/passwd, write all
of /etc/passwd , head would read into buf, split lines, exit.

Better example:
$ cat /dev/zero | head -c 1 ; echo ${PIPESTATUS[@]}
141 0

Note that 141-128=13 and SIGPIPE==13

** Description changed:

  $ ./tools/hook-image-id 
http://cloud-images.ubuntu.com/releases/streams/v1/com.ubuntu.cloud:released:aws.json
 | head
  com.ubuntu.cloud:server:10.04:amd64 20130704 apne1pi ami-8326b382
  com.ubuntu.cloud:server:10.04:amd64 20130704 usee1pe ami-8eadd0e7
  com.ubuntu.cloud:server:10.04:amd64 20130704 usww1pi ami-848ba2c1
  com.ubuntu.cloud:server:10.04:amd64 20130704 usww2pi ami-f19407c1
  com.ubuntu.cloud:server:10.04:amd64 20130704 saee1pi ami-962c898b
  com.ubuntu.cloud:server:10.04:amd64 20130704 saee1pe ami-bc2c89a1
  com.ubuntu.cloud:server:10.04:amd64 20130704 apne1pe ami-2d21b42c
  com.ubuntu.cloud:server:10.04:amd64 20130704 apse1pi ami-34713866
  com.ubuntu.cloud:server:10.04:amd64 20130704 usee1pi ami-1ab3ce73
  com.ubuntu.cloud:server:10.04:amd64 20130704 usww2pe ami-f19b08c1
  Traceback (most recent call last):
-   File "/usr/bin/sstream-sync", line 132, in <module>
-     main()
-   File "/usr/bin/sstream-sync", line 129, in main
-     tmirror.sync(smirror.reader, cfg['path'])
-   File "/usr/lib/python3/dist-packages/simplestreams/mirrors/__init__.py", 
line 58, in sync
-     return self.sync_products(reader, path, data, content)
-   File "/usr/lib/python3/dist-packages/simplestreams/mirrors/__init__.py", 
line 252, in sync_products
-     self.insert_item(item, src, target, pgree, ipath_cs)
-   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
151, in insert_item
-     ret = self.call_hook('insert_item', data=mdata, extra=extra)
-   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
196, in call_hook
-     capture=capture, rcs=rcs)
-   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
211, in call_hook
-     return run_command(mcommand, env=env, capture=capture, rcs=rcs)
-   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
272, in run_command
-     raise subprocess.CalledProcessError(rc, cmd)
+   File "/usr/bin/sstream-sync", line 132, in <module>
+     main()
+   File "/usr/bin/sstream-sync", line 129, in main
+     tmirror.sync(smirror.reader, cfg['path'])
+   File "/usr/lib/python3/dist-packages/simplestreams/mirrors/__init__.py", 
line 58, in sync
+     return self.sync_products(reader, path, data, content)
+   File "/usr/lib/python3/dist-packages/simplestreams/mirrors/__init__.py", 
line 252, in sync_products
+     self.insert_item(item, src, target, pgree, ipath_cs)
+   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
151, in insert_item
+     ret = self.call_hook('insert_item', data=mdata, extra=extra)
+   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
196, in call_hook
+     capture=capture, rcs=rcs)
+   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
211, in call_hook
+     return run_command(mcommand, env=env, capture=capture, rcs=rcs)
+   File 
"/usr/lib/python3/dist-packages/simplestreams/mirrors/command_hook.py", line 
272, in run_command
+     raise subprocess.CalledProcessError(rc, cmd)
  subprocess.CalledProcessError: Command '['sh', '-c', 
'./tools/hook-image-id']' returned non-zero exit status 141
  Exception BrokenPipeError: BrokenPipeError(32, 'Broken pipe') in 
<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> ignored
  
- 
- $ cat /etc/passwd | head -n 1
- root:x:0:0:root:/root:/bin/bash
- $ echo ${PIPESTATUS[@]}
- 0 0
- 
- Ie, 'cat' exits success.
+ Example of 'cat'
+ $ cat /dev/zero | head -c 1 ; echo ${PIPESTATUS[@]}
+ 141 0
  
  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: simplestreams 0.1.0~bzr272-0ubuntu1
  ProcVersionSignature: Ubuntu 3.10.0-5.15-generic 3.10.2
  Uname: Linux 3.10.0-5-generic x86_64
  ApportVersion: 2.11-0ubuntu1
  Architecture: amd64
  Date: Fri Aug  2 10:19:56 2013
  EcryptfsInUse: Yes
  InstallationDate: Installed on 2011-10-19 (653 days ago)
  InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Release amd64 (20111012)
  MarkForUpload: True
  PackageArchitecture: all
  SourcePackage: simplestreams
  UpgradeStatus: Upgraded to saucy on 2013-05-20 (74 days ago)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1207779

Title:
  need to handle BrokenPipeError gracefully

To manage notifications about this bug go to:
https://bugs.launchpad.net/simplestreams/+bug/1207779/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to