incubator-s4-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Flavio Junqueira (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (S4-3) Sometimes one process node owns 2 tasks
Date Fri, 14 Oct 2011 07:18:11 GMT

    [ https://issues.apache.org/jira/browse/S4-3?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13127327#comment-13127327
] 

Flavio Junqueira commented on S4-3:
-----------------------------------

I'm not sure why you say that closing the session would be session would be difficult to implement.
A call to close() the handle would invalidate the session and delete the ephemerals. I'm more
inclined to check if the node exists and if the client is the owner, though. 

Also, apparently I forgot to add the URL to wiki page on error handling in my last comment:
http://wiki.apache.org/hadoop/ZooKeeper/ErrorHandling

                
> Sometimes one process node owns 2 tasks
> ---------------------------------------
>
>                 Key: S4-3
>                 URL: https://issues.apache.org/jira/browse/S4-3
>             Project: Apache S4
>          Issue Type: Bug
>            Reporter: Gavin Li
>            Assignee: Gavin Li
>         Attachments: s4_loscon_fix
>
>
> When using S4, we found sometimes it ends up with one process node owns 2 tasks. I did
some investigation, it seems that the handling of ConnectionLossException when creating the
ephemeral node is problematic. Sometimes when the response from zookeeper server times out,
zookeeper.create() will fail with ConnectionLossException while the creation request might
already be sent to server(see http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/ClientCnxn.java
line 830). From our logs this is the case we ran into.
> Maybe we should handle it in the way that HBase is handling it (http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java?view=markup),
just simply exit the process when got that exception to let the whole process restart.
> To be more clear, what happened was: a process node called zookeeper.create() to acquire
a task, the request was successfully sent to zookeeper server, but the zookeeper IO loop timed
out before the response came. So the zookeeper.create() failed with ConnectionLossException.
Then the process node ignored this exception and tried to acquire another task. Then it got
2 tasks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message