[
https://issues.apache.org/jira/browse/HIVE-16675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16016407#comment-16016407
]
Sahil Takiar commented on HIVE-16675:
-------------------------------------
Why use a {{CopyOnWriteArrayList}}? {{childErrorLog}} is going to be mutated by
the {{Redirector}} object up to 1000 times ({{MAX_ERR_LOG_LINES_FOR_RPC)}}.
{{CopyOnWriteArrayList}} will create a new list for each mutation, so that
means 1000 lists will be created, which seems inefficient. Why not use
{{Collections. synchronizedList}} or even {{LinkedBlockingQueue}}.
> Fix ConcurrentModificationException in SparkClientImpl#startDriver
> ------------------------------------------------------------------
>
> Key: HIVE-16675
> URL: https://issues.apache.org/jira/browse/HIVE-16675
> Project: Hive
> Issue Type: Bug
> Reporter: liyunzhang_intel
> Assignee: liyunzhang_intel
> Attachments: HIVE-16675.patch
>
>
> the exception is
> {noformat}
> 2017-05-16T00:29:37,480 WARN [Driver] client.SparkClientImpl:
> Exception while waiting for child process.
> 3926 java.util.ConcurrentModificationException
> 3927 at
> java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
> ~[?:1.8.0_91]
> 3928 at
> java.util.ArrayList$Itr.next(ArrayList.java:851) ~[?:1.8.0_91]
> 3929 at
> org.apache.hive.spark.client.SparkClientImpl$3.run(SparkClientImpl.java:495)
> [hive-exec-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT]
> 3930 at java.lang.Thread.run(Thread.java:745)
> [?:1.8.0_91]
> {noformat}
> It seems that {{SparkClientImpl.java#childErrorLog}} is read while it is
> written. It is better to change {{SparkClientImpl.java#childErrorLog}} from
> ArrayList to CopyOnWriteArrayList to avoid the exception.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)