puppetlabs/puppet — pull request #2645 by pvande (2014-05-13 23:14:12+00:00)
Title: (PUP-2561) Revert to using UNIX pipes in PMT’s tar operations.

Prior to this change, we’d attempted to handle shell escaping of
arguments by passing arrays of arguments rather than a single full
command string. While this worked as intended, it meant that we needed
to stream data between processes through Ruby. As it happens, larger
tarballs would cause the write pipeline to become backed up, and since
we would attempt to write all the data before reading any, we would
effectively deadlock.

Rather than attempting to stream by chunks, we’ve reverted back to using
the full string commands, and managing shell escapes (where needed) in
Ruby.