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

Doug Cutting updated AVRO-1220:
-------------------------------

    Attachment: AVRO-1220.txt

Moving these public constants to a separate class would be an incompatible API 
change, so that would be an unfortunate solution.

I wonder if instead we might instead explicitly initialize all of the Symbol 
subclasses?  Here's a patch that attempts this.  Does this help?  It's pretty 
ugly code, I admit.
                
> Dead lock 
> ----------
>
>                 Key: AVRO-1220
>                 URL: https://issues.apache.org/jira/browse/AVRO-1220
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.7.3
>         Environment: OSX, JDK6
>            Reporter: Stéphane Landelle
>         Attachments: AVRO-1220.txt
>
>
> I experience a dead lock when running multiple DataFileReader in concurrent 
> threads.
> See test case here:
> https://github.com/slandelle/avro-test
> AvroBinaryEncodingTest randomly stalls about 50% of the time.
> A thread dump would show a dead lock in org.apache.avro.io.parsing.Symbol 
> class initialization.
> IHMO, the problem is that the Symbol class has static final members that are 
> instances of Symbol subclasses.
> I built a custom version of avro where all the constants (NULL, BOOLEAN, INT, 
> etc) have been extracted into a dedicated class outside of Symbol hierarchy 
> and the test case now runs fine.
> Cheers,
> Stéphane Landelle

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to