You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Patrick Hunt (JIRA)" <ji...@apache.org> on 2009/07/23 00:51:14 UTC

[jira] Assigned: (ZOOKEEPER-482) ignore sigpipe in testRetry to avoid silent immediate failure

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Patrick Hunt reassigned ZOOKEEPER-482:
--------------------------------------

    Assignee: Chris Darroch

> ignore sigpipe in testRetry to avoid silent immediate failure
> -------------------------------------------------------------
>
>                 Key: ZOOKEEPER-482
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-482
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: c client, tests
>    Affects Versions: 3.2.0
>            Reporter: Chris Darroch
>            Assignee: Chris Darroch
>            Priority: Minor
>             Fix For: 3.2.1, 3.3.0
>
>         Attachments: ZOOKEEPER-482.patch
>
>
> The testRetry test silently exits for me periodically, especially, it seems, on newer hardware.  It also spits out from log messages clutter the test output.
> The silent exits turn out to be because SIGPIPE is sometimes delivered during the sleep(1) in createClient(), the second time createClient() is called.  Since SIGPIPE is not being ignored and there is no signal handler, the process exists immediately.  This leaves the test suite in a broken state, with the test ZooKeeper process still running because "zkServer.sh stop" is not run by tearDown().  You have to manually kill the ZK server and retry the tests; sometimes they succeed and sometimes they don't.
> I described SIGPIPE handling a little in ZOOKEEPER-320.  The appropriate thing, I think, is for the client application to ignore or handle SIGPIPE.  In this case, that falls to the test processes.  The attached patch fixes the issue for me with testRetry.
> The patch uses sigaction() to ignore SIGPIPE in TestClientRetry.cc and, for good measure (although I never saw it actually fail for me), TestClient.cc, since that file also uses sleep() extensively.
> I also removed a couple of unused functions and a macro definition from TestClientRetry.cc, just to simply matters, and turned off log output, which makes the testRetry output much, much cleaner (otherwise you get a lot of log output spamming into the nice clean cppunit output :-).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.