[
https://issues.apache.org/jira/browse/PIG-4845?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15205477#comment-15205477
]
Daniel Dai commented on PIG-4845:
---------------------------------
+1
> Parallel instantiation of classes in Tez cause tasks to fail
> ------------------------------------------------------------
>
> Key: PIG-4845
> URL: https://issues.apache.org/jira/browse/PIG-4845
> Project: Pig
> Issue Type: Bug
> Reporter: Rohini Palaniswamy
> Assignee: Rohini Palaniswamy
> Fix For: 0.16.0
>
> Attachments: PIG-4845-1.patch
>
>
> OptionBuilder is not thread-safe
> https://commons.apache.org/proper/commons-cli/javadocs/api-release/org/apache/commons/cli/OptionBuilder.html
> {code}
> This class is NOT thread safe. See CLI-209
> {code}
> HBaseStorage, elephantbird SequenceFileConfig, etc use it in their
> constructor. This leads to NoSuchMethodException, UnrecognizedOptionException
> etc when processor, inputs and outputs are initialized in parallel in Tez
> making the task fail. Retry attempts mostly go through and job might succeed.
> Need to synchronize the initialization. synchronize would make it similar to
> mapreduce though at a slight performance cost. But that should be lot better
> than cost of relaunching containers after hitting failures.
> Following two kinds of exception where seen when HBaseStorage and
> SequenceFileStorage of elephantbird were used together.
> org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option:
> -loadKey
> {code}
> Caused by: java.lang.RuntimeException: Failed to create WritableConverter
> instance
> at
> com.twitter.elephantbird.pig.util.SequenceFileConfig.getWritableConverter(SequenceFileConfig.java:225)
> at
> com.twitter.elephantbird.pig.util.SequenceFileConfig.<init>(SequenceFileConfig.java:101)
> at
> com.twitter.elephantbird.pig.util.SequenceFileConfig.<init>(SequenceFileConfig.java:115)
> ... 11 more
> Caused by: java.lang.NoSuchMethodException:
> com.twitter.elephantbird.pig.util.TextConverter.<init>(java.lang.String)
> at java.lang.Class.getConstructor0(Class.java:3082)
> at java.lang.Class.getConstructor(Class.java:1825)
> at
> com.twitter.elephantbird.pig.util.SequenceFileConfig.getWritableConverter(SequenceFileConfig.java:213)
> ... 13 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)