[OpenSRF-GIT] OpenSRF branch master updated. a7be31f137ccf6e2f4522c9a4c690a23b5636db8

Evergreen Git git at git.evergreen-ils.org
Fri Oct 28 11:51:23 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OpenSRF".

The branch, master has been updated
       via  a7be31f137ccf6e2f4522c9a4c690a23b5636db8 (commit)
      from  40a753b10a3db58baa9179d75a76df1266589ea1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a7be31f137ccf6e2f4522c9a4c690a23b5636db8
Author: Bill Erickson <berick at esilibrary.com>
Date:   Fri Oct 28 11:33:24 2011 -0400

    Add SIGPIPE retry handling to child data sysread
    
    Similar to the SIGPIPE retry logic wrapped around the parent process'
    syswrite call (for sending data to a child process), protect the child's
    sysread call (as it reads data from the parent).  In pre-2.0, the
    sysread step was handled by Net::Server, but now we need to protect it
    ourselves.
    
    Signed-off-by: Bill Erickson <berick at esilibrary.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/src/perl/lib/OpenSRF/Server.pm b/src/perl/lib/OpenSRF/Server.pm
index 28980d3..9e7ffa8 100644
--- a/src/perl/lib/OpenSRF/Server.pm
+++ b/src/perl/lib/OpenSRF/Server.pm
@@ -589,10 +589,20 @@ sub wait_for_request {
     while(1) {
         # Start out blocking, when data is available, read it all
 
+        my $sig_pipe = 0;
+        local $SIG{'PIPE'} = sub { $sig_pipe = 1 };
+
         my $buf = '';
         my $n = sysread($self->{pipe_to_parent}, $buf, $read_size);
 
         unless(defined $n) {
+
+            if ($sig_pipe) {
+                $logger->info("server: $self got SIGPIPE reading data from parent, retrying...");
+                usleep(50000); # 50 msec
+                next;
+            }
+
             $logger->error("server: error reading data pipe: $!") unless EAGAIN == $!; 
             last;
         }

-----------------------------------------------------------------------

Summary of changes:
 src/perl/lib/OpenSRF/Server.pm |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
OpenSRF


More information about the opensrf-commits mailing list