avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Carey (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AVRO-650) failures under client concurrency
Date Thu, 02 Sep 2010 21:47:55 GMT

    [ https://issues.apache.org/jira/browse/AVRO-650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12905684#action_12905684
] 

Scott Carey commented on AVRO-650:
----------------------------------

The first two stack traces indicate that the parser's position is corrupted, probably due
to a race condition.  It pulled a null symbol off the stack in the second trace, and an invalid
one in the first.

The second two traces look like they could happen if the catch block at Responder.java:152
is hit before Responder.java:109 completes.   This would mean that handshake() threw an exception
and I would suspect we would see a log warning about that associated with that.

ResponderServlet.java has a single reference to one Responder that alll threads use.  This
is probably the source of the problem.  Responder.respond() looks threadsafe, but handshake()
does not.

handshake uses a handshakeReader member variable, that I'm pretty sure maps to the race condition
in the Parser.


That is my guess, I don't have things set up to be able to reproduce or validate this however.

The simplest fix would be to change the Responder member variable in ResponderServlet to a
ThreadLocal<Responder>, and make sure that the Servlet destroy() method clears the ThreadLocal.

> failures under client concurrency
> ---------------------------------
>
>                 Key: AVRO-650
>                 URL: https://issues.apache.org/jira/browse/AVRO-650
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.4.0
>            Reporter: Eric Evans
>            Assignee: Thiruvalluvan M. G.
>            Priority: Blocker
>         Attachments: exceptions.txt, tester.py
>
>
> I'm having trouble getting any client concurrency out of cassandra's rpc server.  Running
the attached `tester.py' from more than one terminal window is enough to generate the exceptions
seen in `exceptions.txt'.

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


Mime
View raw message