Issue #3013 has been updated by Markus Roberts.
The version presently posted on this branch (which was just tested) does a
final select + read:
if select([output_read], nil, nil,0.5)
# Make sure that there is data to be read to avoid
# indefinitely blocking reads.
output << output_read.send(method, 4096)
elsif reaped_pid
# Once the child has exited, and select has had one
more
# chance then stop attempting to read, even if EOF
has not
# been reached. (see ticket #1563 comment #7)
break
else
reaped_pid = Process.waitpid(child_pid,
Process::WNOHANG)
end
That's how I got it to stop dropping data (see comment 35, above).
----------------------------------------
Bug #3013: util.rb:execute broken on Ruby <1.8.3
http://projects.reductivelabs.com/issues/3013
Author: Ricky Zhou
Status: Code Insufficient
Priority: Urgent
Assigned to: Markus Roberts
Category: exec
Target version: 0.25.3
Affected version: 0.25.2
Keywords:
Branch: http://github.com/MarkusQ/puppet/tree/ticket/0.25.x/3013
Apparently the patch in ticket #2731 introduced one more issue by using
readpartial, which isn't available until ruby 1.8.3 (RHEL4 at least is
affected). I'm not sure how this is normally handled in ruby, but if the
readpartial function is not available, the code should fall back to sysread
(along with some code for handling EINTR).
Anybody with better ruby knowledge know how this should be done?
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://reductivelabs.com/redmine/my/account
-- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
