[ 
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)

Reply via email to