You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by xuanyuanking <gi...@git.apache.org> on 2018/01/04 11:59:03 UTC

[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

GitHub user xuanyuanking opened a pull request:

    https://github.com/apache/spark/pull/20150

    [SPARK-22956][SS] Bug fix for 2 streams union failover scenario

    ## What changes were proposed in this pull request?
    
    This problem reported by @yanlin-Lynn @ivoson and @LiangchangZ. Thanks!
    
    When we union 2 streams from kafka or other sources, while one of them have no continues data coming and in the same time task restart, this will cause an `IllegalStateException`. This mainly cause because the code in [MicroBatchExecution](https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/MicroBatchExecution.scala#L190) , while one stream has no continues data, its comittedOffset same with availableOffset during `populateStartOffsets`, and `currentPartitionOffsets` not properly handled in KafkaSource. Also, maybe we should also consider this scenario in other Source.
    
    ## How was this patch tested?
    
    Add a UT in KafkaSourceSuite.scala


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/xuanyuanking/spark SPARK-22956

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/20150.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #20150
    
----
commit aa3d7b73ed5221bdc2aee9dea1f6db45b4a626d7
Author: Yuanjian Li <xy...@...>
Date:   2018-01-04T11:52:23Z

    SPARK-22956: Bug fix for 2 streams union failover scenario

----


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by zsxwing <gi...@git.apache.org>.
Github user zsxwing commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20150#discussion_r161340108
  
    --- Diff: external/kafka-0-10-sql/src/test/scala/org/apache/spark/sql/kafka010/KafkaSourceSuite.scala ---
    @@ -318,6 +318,84 @@ class KafkaSourceSuite extends KafkaSourceTest {
         )
       }
     
    +  test("union bug in failover") {
    --- End diff --
    
    nit: `test("SPARK-22956: currentPartitionOffsets should be set when no new data comes in")`


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Hi Shixiong, thanks a lot for your reply.
    The full stack below can reproduce by running the added UT based on original code base.
    ```
    Assert on query failed: : Query [id = 3421db21-652e-47af-9d54-2b74a222abed, runId = cd8d7c94-1286-44a5-b000-a8d870aef6fa] terminated with exception: Partition topic-0-0's offset was changed from 10 to 5, some data may have been missed. 
    Some data may have been lost because they are not available in Kafka any more; either the
     data was aged out by Kafka or the topic may have been deleted before all the data in the
     topic was processed. If you don't want your streaming query to fail on such cases, set the
     source option "failOnDataLoss" to "false".
        
    org.apache.spark.sql.execution.streaming.StreamExecution.org$apache$spark$sql$execution$streaming$StreamExecution$$runStream(StreamExecution.scala:295)
    	org.apache.spark.sql.execution.streaming.StreamExecution$$anon$1.run(StreamExecution.scala:189)
    
    	Caused by: 	Partition topic-0-0's offset was changed from 10 to 5, some data may have been missed. 
    Some data may have been lost because they are not available in Kafka any more; either the
     data was aged out by Kafka or the topic may have been deleted before all the data in the
     topic was processed. If you don't want your streaming query to fail on such cases, set the
     source option "failOnDataLoss" to "false".
        
    	org.apache.spark.sql.kafka010.KafkaSource.org$apache$spark$sql$kafka010$KafkaSource$$reportDataLoss(KafkaSource.scala:332)
    		org.apache.spark.sql.kafka010.KafkaSource$$anonfun$8.apply(KafkaSource.scala:291)
    		org.apache.spark.sql.kafka010.KafkaSource$$anonfun$8.apply(KafkaSource.scala:289)
    		scala.collection.TraversableLike$$anonfun$filterImpl$1.apply(TraversableLike.scala:248)
    		scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
    		scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
    		scala.collection.TraversableLike$class.filterImpl(TraversableLike.scala:247)
    		scala.collection.TraversableLike$class.filter(TraversableLike.scala:259)
    		scala.collection.AbstractTraversable.filter(Traversable.scala:104)
    		org.apache.spark.sql.kafka010.KafkaSource.getBatch(KafkaSource.scala:289)
    ```


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    **[Test build #85678 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/85678/testReport)** for PR 20150 at commit [`fa64187`](https://github.com/apache/spark/commit/fa641878f3aa6effd5e88ad40e5355ac46cc5175).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    cc @gatorsmile @cloud-fan 


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by zsxwing <gi...@git.apache.org>.
Github user zsxwing commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Thanks! Merging to master and 2.3.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/85675/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by zsxwing <gi...@git.apache.org>.
Github user zsxwing commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    @xuanyuanking could you post the full stack trace about this issue?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20150#discussion_r161426622
  
    --- Diff: external/kafka-0-10-sql/src/test/scala/org/apache/spark/sql/kafka010/KafkaSourceSuite.scala ---
    @@ -318,6 +318,84 @@ class KafkaSourceSuite extends KafkaSourceTest {
         )
       }
     
    +  test("union bug in failover") {
    +    def getSpecificDF(range: Range.Inclusive): org.apache.spark.sql.Dataset[Int] = {
    +      val topic = newTopic()
    +      testUtils.createTopic(topic, partitions = 1)
    +      testUtils.sendMessages(topic, range.map(_.toString).toArray, Some(0))
    +
    +      val reader = spark
    +        .readStream
    +        .format("kafka")
    +        .option("kafka.bootstrap.servers", testUtils.brokerAddress)
    +        .option("kafka.metadata.max.age.ms", "1")
    +        .option("maxOffsetsPerTrigger", 5)
    +        .option("subscribe", topic)
    +        .option("startingOffsets", "earliest")
    +
    +      reader.load()
    +        .selectExpr("CAST(value AS STRING)")
    +        .as[String]
    +        .map(k => k.toInt)
    +    }
    +
    +    val df1 = getSpecificDF(0 to 9)
    +    val df2 = getSpecificDF(100 to 199)
    +
    +    val kafka = df1.union(df2)
    +
    +    val clock = new StreamManualClock
    +
    +    val waitUntilBatchProcessed = AssertOnQuery { q =>
    +      eventually(Timeout(streamingTimeout)) {
    +        if (!q.exception.isDefined) {
    +          assert(clock.isStreamWaitingAt(clock.getTimeMillis()))
    +        }
    +      }
    +      if (q.exception.isDefined) {
    +        throw q.exception.get
    +      }
    +      true
    +    }
    +
    +    testStream(kafka)(
    +      StartStream(ProcessingTime(100), clock),
    +      waitUntilBatchProcessed,
    +      // 5 from smaller topic, 5 from bigger one
    +      CheckAnswer(0, 1, 2, 3, 4, 100, 101, 102, 103, 104),
    --- End diff --
    
    Cool, this made the code more cleaner.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/spark/pull/20150


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    **[Test build #86128 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/86128/testReport)** for PR 20150 at commit [`bf8af29`](https://github.com/apache/spark/commit/bf8af29f155b776b171f2424e2adac86151a576d).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    **[Test build #85675 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/85675/testReport)** for PR 20150 at commit [`aa3d7b7`](https://github.com/apache/spark/commit/aa3d7b73ed5221bdc2aee9dea1f6db45b4a626d7).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    cc @zsxwing 


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20150#discussion_r161426632
  
    --- Diff: external/kafka-0-10-sql/src/test/scala/org/apache/spark/sql/kafka010/KafkaSourceSuite.scala ---
    @@ -318,6 +318,84 @@ class KafkaSourceSuite extends KafkaSourceTest {
         )
       }
     
    +  test("union bug in failover") {
    --- End diff --
    
    DONE


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    **[Test build #85675 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/85675/testReport)** for PR 20150 at commit [`aa3d7b7`](https://github.com/apache/spark/commit/aa3d7b73ed5221bdc2aee9dea1f6db45b4a626d7).
     * This patch **fails to build**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by zsxwing <gi...@git.apache.org>.
Github user zsxwing commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20150#discussion_r161337159
  
    --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/memory.scala ---
    @@ -122,6 +122,11 @@ case class MemoryStream[A : Encoder](id: Int, sqlContext: SQLContext)
           batches.slice(sliceStart, sliceEnd)
         }
     
    +    if (newBlocks.isEmpty) {
    --- End diff --
    
    nit: could you add an `assert(sliceStart <= sliceEnd, s"sliceStart: $sliceStart sliceEnd: $sliceEnd")` above `batches.slice(sliceStart, sliceEnd)` to make sure `getBatch` will not be called with wrong offsets.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/86128/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by zsxwing <gi...@git.apache.org>.
Github user zsxwing commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20150#discussion_r161341002
  
    --- Diff: external/kafka-0-10-sql/src/test/scala/org/apache/spark/sql/kafka010/KafkaSourceSuite.scala ---
    @@ -318,6 +318,84 @@ class KafkaSourceSuite extends KafkaSourceTest {
         )
       }
     
    +  test("union bug in failover") {
    +    def getSpecificDF(range: Range.Inclusive): org.apache.spark.sql.Dataset[Int] = {
    +      val topic = newTopic()
    +      testUtils.createTopic(topic, partitions = 1)
    +      testUtils.sendMessages(topic, range.map(_.toString).toArray, Some(0))
    +
    +      val reader = spark
    +        .readStream
    +        .format("kafka")
    +        .option("kafka.bootstrap.servers", testUtils.brokerAddress)
    +        .option("kafka.metadata.max.age.ms", "1")
    +        .option("maxOffsetsPerTrigger", 5)
    +        .option("subscribe", topic)
    +        .option("startingOffsets", "earliest")
    +
    +      reader.load()
    +        .selectExpr("CAST(value AS STRING)")
    +        .as[String]
    +        .map(k => k.toInt)
    +    }
    +
    +    val df1 = getSpecificDF(0 to 9)
    +    val df2 = getSpecificDF(100 to 199)
    +
    +    val kafka = df1.union(df2)
    +
    +    val clock = new StreamManualClock
    +
    +    val waitUntilBatchProcessed = AssertOnQuery { q =>
    +      eventually(Timeout(streamingTimeout)) {
    +        if (!q.exception.isDefined) {
    +          assert(clock.isStreamWaitingAt(clock.getTimeMillis()))
    +        }
    +      }
    +      if (q.exception.isDefined) {
    +        throw q.exception.get
    +      }
    +      true
    +    }
    +
    +    testStream(kafka)(
    +      StartStream(ProcessingTime(100), clock),
    +      waitUntilBatchProcessed,
    +      // 5 from smaller topic, 5 from bigger one
    +      CheckAnswer(0, 1, 2, 3, 4, 100, 101, 102, 103, 104),
    --- End diff --
    
    You can clean these codes a bit using the following snippet:
    ```
        testStream(kafka)(
          StartStream(ProcessingTime(100), clock),
          waitUntilBatchProcessed,
          // 5 from smaller topic, 5 from bigger one
          CheckLastBatch((0 to 4) ++ (100 to 104): _*),
          AdvanceManualClock(100),
          waitUntilBatchProcessed,
          // 5 from smaller topic, 5 from bigger one
          CheckLastBatch((5 to 9) ++ (105 to 109): _*),
          AdvanceManualClock(100),
          waitUntilBatchProcessed,
          // smaller topic empty, 5 from bigger one
          CheckLastBatch(110 to 114: _*),
          StopStream,
          StartStream(ProcessingTime(100), clock),
          waitUntilBatchProcessed,
          // smallest now empty, 5 from bigger one
          CheckLastBatch(115 to 119: _*),
          AdvanceManualClock(100),
          waitUntilBatchProcessed,
          // smallest now empty, 5 from bigger one
          CheckLastBatch(120 to 124: _*)
        )
    ```


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20150: [SPARK-22956][SS] Bug fix for 2 streams union fai...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20150#discussion_r161426641
  
    --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/memory.scala ---
    @@ -122,6 +122,11 @@ case class MemoryStream[A : Encoder](id: Int, sqlContext: SQLContext)
           batches.slice(sliceStart, sliceEnd)
         }
     
    +    if (newBlocks.isEmpty) {
    --- End diff --
    
    DONE


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    **[Test build #86128 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/86128/testReport)** for PR 20150 at commit [`bf8af29`](https://github.com/apache/spark/commit/bf8af29f155b776b171f2424e2adac86151a576d).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/85678/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by xuanyuanking <gi...@git.apache.org>.
Github user xuanyuanking commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Thanks for your review! Shixiong


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    **[Test build #85678 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/85678/testReport)** for PR 20150 at commit [`fa64187`](https://github.com/apache/spark/commit/fa641878f3aa6effd5e88ad40e5355ac46cc5175).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20150: [SPARK-22956][SS] Bug fix for 2 streams union failover s...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20150
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org