Github user andrewor14 commented on a diff in the pull request:

    https://github.com/apache/spark/pull/10779#discussion_r50159846
  
    --- Diff: 
streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListenerForwardingBus.scala
 ---
    @@ -17,17 +17,38 @@
     
     package org.apache.spark.streaming.scheduler
     
    -import java.util.concurrent.atomic.AtomicBoolean
    +import org.apache.spark.scheduler.{LiveListenerBus, SparkListener, 
SparkListenerEvent}
    +import org.apache.spark.util.ListenerBus
     
    -import org.apache.spark.Logging
    -import org.apache.spark.util.AsynchronousListenerBus
    +/**
    + * Wrap StreamingListenerEvent as SparkListenerEvent so that it can be 
posted to Spark listener bus.
    + */
    +private[streaming] case class WrappedStreamingListenerEvent(
    +    streamingListenerEvent: StreamingListenerEvent) extends 
SparkListenerEvent {
    +
    +  // TODO once SPARK-12140 is resolved this will be true as well
    +  protected[spark] override def logEvent: Boolean = false
    +}
     
    -/** Asynchronously passes StreamingListenerEvents to registered 
StreamingListeners. */
    -private[spark] class StreamingListenerBus
    -  extends AsynchronousListenerBus[StreamingListener, 
StreamingListenerEvent]("StreamingListenerBus")
    -  with Logging {
    +/**
    + * A Streaming listener bus to forward events in 
WrappedStreamingListenerEvent to StreamingListeners
    + */
    +private[streaming] class StreamingListenerForwardingBus(sparkListenerBus: 
LiveListenerBus)
    +  extends SparkListener with ListenerBus[StreamingListener, 
StreamingListenerEvent] {
    --- End diff --
    
    I think it's fine that it extends `ListenerBus` since it does in fact share 
the same method signatures. I don't see how the threading assumptions are 
violated if we call `postToAll`. There's only 1 thread (the core listener bus), 
and that thread calls this synchronously.
    
    Also it's not just the 3 lines. We also want to inherit the `postToAll` 
method because we want to post to all streaming listeners, right? The 
implementation also has some try catch logic in there so I think it's better 
this way.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to