[
https://issues.apache.org/jira/browse/HIVE-9976?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Siddharth Seth updated HIVE-9976:
---------------------------------
Attachment: HIVE-9976.2.patch
Thanks for the review. Updated patch with comments addressed, and some more
changes.
bq. Not your fault - but there are 2 paths through HiveSplitGenerator.
Moved the methods into SplitGrouper. There's a static cache in there which
seems a little strange. Will create a follow up jira to investigate this. For
now I've changed that to a ConcurrentMap since split generation can run in
parallel.
bq. i see you've fixed calling close consistently on the data input stream.
maybe use try{}finally there?
Fixed. There was a bug with some of the other conditions which I'd changed.
Fixed that as well.
bq. it seems you're setting numexpectedevents to 0 first and then turn around
and call decrement. Why not just set to -1? Also - why atomic integers? as far
as i can tell all access to these maps is synchronized.
numExpectedEvents is decremented for each column for which a source will send
events. That's used to track total number of expected events from that source.
Added a comment for this.
Moved from AtomicIntegers to MutableInt - this was just to avoid re-inserting
the Integer into the map, and not for thread safety.
bq. does it make sense to make initialize in the pruner private now? (can't be
used to init anymore - only from the constr). Also, the parameters aren't used
anymore, right?
Done, along with some other methods.
> Possible race condition in DynamicPartitionPruner for <200ms tasks
> ------------------------------------------------------------------
>
> Key: HIVE-9976
> URL: https://issues.apache.org/jira/browse/HIVE-9976
> Project: Hive
> Issue Type: Bug
> Components: Tez
> Affects Versions: 1.0.0
> Reporter: Gopal V
> Assignee: Siddharth Seth
> Attachments: HIVE-9976.1.patch, HIVE-9976.2.patch,
> llap_vertex_200ms.png
>
>
> Race condition in the DynamicPartitionPruner between
> DynamicPartitionPruner::processVertex() and
> DynamicPartitionpruner::addEvent() for tasks which respond with both the
> result and success in a single heartbeat sequence.
> {code}
> 2015-03-16 07:05:01,589 ERROR [InputInitializer [Map 1] #0]
> tez.DynamicPartitionPruner: Expecting: 1, received: 0
> 2015-03-16 07:05:01,590 ERROR [Dispatcher thread: Central] impl.VertexImpl:
> Vertex Input: store_sales initializer failed,
> vertex=vertex_1424502260528_1113_4_04 [Map 1]
> org.apache.tez.dag.app.dag.impl.AMUserCodeException:
> org.apache.hadoop.hive.ql.metadata.HiveException: Incorrect event count in
> dynamic parition pruning
> {code}
> !llap_vertex_200ms.png!
> All 4 upstream vertices of Map 1 need to finish within ~200ms to trigger
> this, which seems to be consistently happening with LLAP.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)