> On Jan. 17, 2015, 12:19 a.m., Xuefu Zhang wrote:
> > spark-client/src/main/java/org/apache/hive/spark/client/JobHandleImpl.java, 
> > line 179
> > <https://reviews.apache.org/r/29954/diff/1-2/?file=823286#file823286line179>
> >
> >     Sorry I didn't get it, but why?
> >     Clarity but not perf is my concern. Here we are notifying listeners 
> > with a new Spark job ID, which is done in the for loop, which is 
> > synchronized. This means no listener may be added or removed from the 
> > listeners. On the other hand, sparkJobIds.add(sparkJobId) seems irrelevant 
> > to any changes to listeners, unless I missed anything. I don't understand 
> > why either of the two cases might happen as you suggested.

Threads: T1 updating the job handle, T2 adding a listener

Case 1:
   Statement 1 (S1): sparkJobIds.add(sparkJobId);
   Statement 2 (S2): synchronized (listeners) { /* call 
onSparkJobStarted(newSparkJobId) on every listener */ }

Timeline:
T1: executes S1
T2: calls addListener(), new listener is notified of the sparkJobId added above
T1: executes S2. New listener is notified again of new spark job ID.


Case 2:
  Invert S1 and S2.
  
T2: calls addListener()
T1: executes S1. Listener is called with the current state of the handle and 
new Spark job ID. Listener checks 
`handle.getSparkJobIDs().contains(newSparkJobId)`, check fails.


Those seem pretty easy to understand to me. The current code avoids both of 
them.


- Marcelo


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29954/#review68513
-----------------------------------------------------------


On Jan. 16, 2015, 11:24 p.m., Marcelo Vanzin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29954/
> -----------------------------------------------------------
> 
> (Updated Jan. 16, 2015, 11:24 p.m.)
> 
> 
> Review request for hive, Brock Noland, chengxiang li, and Xuefu Zhang.
> 
> 
> Bugs: HIVE-9179
>     https://issues.apache.org/jira/browse/HIVE-9179
> 
> 
> Repository: hive-git
> 
> 
> Description
> -------
> 
> HIVE-9179. Add listener API to JobHandle.
> 
> 
> Diffs
> -----
> 
>   spark-client/pom.xml 77016df61a0bcbd94058bcbd2825c6c210a70e14 
>   spark-client/src/main/java/org/apache/hive/spark/client/BaseProtocol.java 
> f9c10b196ab47b5b4f4c0126ad455869ab68f0ca 
>   spark-client/src/main/java/org/apache/hive/spark/client/JobHandle.java 
> e760ce35d92bedf4d301b08ec57d1c2dc37a39f0 
>   spark-client/src/main/java/org/apache/hive/spark/client/JobHandleImpl.java 
> 1b8feedb0b23aa7897dc6ac37ea5c0209e71d573 
>   spark-client/src/main/java/org/apache/hive/spark/client/RemoteDriver.java 
> 0d49ed3d9e33ca08d6a7526c1c434a0dd0a06a67 
>   
> spark-client/src/main/java/org/apache/hive/spark/client/SparkClientImpl.java 
> a30d8cbbaae9d25b1cffdc286b546f549e439545 
>   spark-client/src/test/java/org/apache/hive/spark/client/TestJobHandle.java 
> PRE-CREATION 
>   
> spark-client/src/test/java/org/apache/hive/spark/client/TestSparkClient.java 
> 795d62c776cec5e9da2a24b7d40bc749a03186ab 
> 
> Diff: https://reviews.apache.org/r/29954/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Marcelo Vanzin
> 
>

Reply via email to