You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Tathagata Das (JIRA)" <ji...@apache.org> on 2018/08/22 19:24:00 UTC

[jira] [Resolved] (SPARK-25184) Flaky test: FlatMapGroupsWithState "streaming with processing time timeout"

     [ https://issues.apache.org/jira/browse/SPARK-25184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tathagata Das resolved SPARK-25184.
-----------------------------------
       Resolution: Fixed
    Fix Version/s: 3.0.0

Issue resolved by pull request 22182
[https://github.com/apache/spark/pull/22182]

> Flaky test: FlatMapGroupsWithState "streaming with processing time timeout"
> ---------------------------------------------------------------------------
>
>                 Key: SPARK-25184
>                 URL: https://issues.apache.org/jira/browse/SPARK-25184
>             Project: Spark
>          Issue Type: Test
>          Components: Structured Streaming
>    Affects Versions: 2.3.2
>            Reporter: Tathagata Das
>            Assignee: Tathagata Das
>            Priority: Minor
>             Fix For: 3.0.0
>
>
> {code}
> Assert on query failed: Check total state rows = List(1), updated state rows = List(2): Array() did not equal List(1) incorrect total rows, recent progresses:
> {
>   "id" : "3598002e-0120-4937-8a36-226e0af992b6",
>   "runId" : "e7efe911-72fb-48aa-ba35-775057eabe55",
>   "name" : null,
>   "timestamp" : "1970-01-01T00:00:12.000Z",
>   "batchId" : 3,
>   "numInputRows" : 0,
>   "durationMs" : {
>     "getEndOffset" : 0,
>     "setOffsetRange" : 0,
>     "triggerExecution" : 0
>   },
>   "stateOperators" : [ ],
>   "sources" : [ {
>     "description" : "MemoryStream[value#474622]",
>     "startOffset" : 2,
>     "endOffset" : 2,
>     "numInputRows" : 0
>   } ],
>   "sink" : {
>     "description" : "MemorySink"
>   }
> }
> org.scalatest.Assertions$class.newAssertionFailedException(Assertions.scala:528)
> 	org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)
> 	org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:501)
> 	org.apache.spark.sql.streaming.StateStoreMetricsTest$$anonfun$assertNumStateRows$1.apply(StateStoreMetricsTest.scala:55)
> 	org.apache.spark.sql.streaming.StateStoreMetricsTest$$anonfun$assertNumStateRows$1.apply(StateStoreMetricsTest.scala:33)
> 	org.apache.spark.sql.streaming.StreamTest$$anonfun$executeAction$1$11.apply$mcZ$sp(StreamTest.scala:657)
> 	org.apache.spark.sql.streaming.StreamTest$class.verify$1(StreamTest.scala:428)
> 	org.apache.spark.sql.streaming.StreamTest$class.executeAction$1(StreamTest.scala:657)
> 	org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:775)
> 	org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:762)
> == Progress ==
>    StartStream(ProcessingTime(1000),org.apache.spark.sql.streaming.util.StreamManualClock@5a12704,Map(),null)
>    AddData to MemoryStream[value#474622]: a
>    AdvanceManualClock(1000)
>    CheckNewAnswer: [a,1]
>    AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(1))
>    AddData to MemoryStream[value#474622]: b
>    AdvanceManualClock(1000)
>    CheckNewAnswer: [b,1]
>    AssertOnQuery(<condition>, Check total state rows = List(2), updated state rows = List(1))
>    AddData to MemoryStream[value#474622]: b
>    AdvanceManualClock(10000)
>    CheckNewAnswer: [a,-1],[b,2]
>    AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(2))
>    StopStream
>    StartStream(ProcessingTime(1000),org.apache.spark.sql.streaming.util.StreamManualClock@5a12704,Map(),null)
>    AddData to MemoryStream[value#474622]: c
>    AdvanceManualClock(11000)
>    CheckNewAnswer: [b,-1],[c,1]
> => AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(2))
>    AdvanceManualClock(12000)
>    AssertOnQuery(<condition>, )
>    AssertOnQuery(<condition>, name)
>    CheckNewAnswer: [c,-1]
>    AssertOnQuery(<condition>, Check total state rows = List(0), updated state rows = List(0))
> == Stream ==
> Output Mode: Update
> Stream state: {MemoryStream[value#474622]: 3}
> Thread state: alive
> Thread stack trace: java.lang.Object.wait(Native Method)
> org.apache.spark.util.ManualClock.waitTillTime(ManualClock.scala:61)
> org.apache.spark.sql.streaming.util.StreamManualClock.waitTillTime(StreamManualClock.scala:34)
> org.apache.spark.sql.execution.streaming.ProcessingTimeExecutor.execute(TriggerExecutor.scala:65)
> org.apache.spark.sql.execution.streaming.MicroBatchExecution.runActivatedStream(MicroBatchExecution.scala:166)
> org.apache.spark.sql.execution.streaming.StreamExecution.org$apache$spark$sql$execution$streaming$StreamExecution$$runStream(StreamExecution.scala:293)
> org.apache.spark.sql.execution.streaming.StreamExecution$$anon$1.run(StreamExecution.scala:203)
> == Sink ==
> 0: [a,1]
> 1: [b,1]
> 2: [a,-1] [b,2]
> 3: [b,-1] [c,1]
> == Plan ==
> == Parsed Logical Plan ==
> SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1, true, false) AS _1#474630, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2, true, false) AS _2#474631]
> +- FlatMapGroupsWithState <function3>, cast(value#474625 as string).toString, cast(value#474622 as string).toString, [value#474625], [value#474622], obj#474629: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout
>    +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], cast(value#474622 as string).toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#474625]
>       +- Project [value#474737 AS value#474622]
>          +- StreamingDataSourceV2Relation [value#474737], MemoryStream[value#474622]
> == Analyzed Logical Plan ==
> _1: string, _2: string
> SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1, true, false) AS _1#474630, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2, true, false) AS _2#474631]
> +- FlatMapGroupsWithState <function3>, cast(value#474625 as string).toString, cast(value#474622 as string).toString, [value#474625], [value#474622], obj#474629: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout
>    +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], cast(value#474622 as string).toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#474625]
>       +- Project [value#474737 AS value#474622]
>          +- StreamingDataSourceV2Relation [value#474737], MemoryStream[value#474622]
> == Optimized Logical Plan ==
> SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._1, true, false) AS _1#474630, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._2, true, false) AS _2#474631]
> +- FlatMapGroupsWithState <function3>, value#474625.toString, value#474737.toString, [value#474625], [value#474737], obj#474629: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout
>    +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], value#474737.toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#474625]
>       +- StreamingDataSourceV2Relation [value#474737], MemoryStream[value#474622]
> == Physical Plan ==
> *(3) SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._1, true, false) AS _1#474630, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._2, true, false) AS _2#474631]
> +- FlatMapGroupsWithState <function3>, value#474625.toString, value#474737.toString, [value#474625], [value#474737], obj#474629: scala.Tuple2, state info [ checkpoint = file:/home/jenkins/workspace/sql/core/target/tmp/streaming.metadata-c83eb927-b99f-4c69-9c53-cbb80b0829e4/state, runId = e7efe911-72fb-48aa-ba35-775057eabe55, opId = 0, ver = 3, numPartitions = 5], class[count[0]: bigint], 2, Update, ProcessingTimeTimeout, 23000, 0
>    +- *(2) Sort [value#474625 ASC NULLS FIRST], false, 0
>       +- Exchange hashpartitioning(value#474625, 5)
>          +- AppendColumns <function1>, value#474737.toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#474625]
>             +- *(1) DataSourceV2Scan [value#474737], MemoryStream[value#474622]
>          
>          
> 	at org.scalatest.Assertions$class.newAssertionFailedException(Assertions.scala:528)
> 	at org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)
> 	at org.scalatest.Assertions$class.fail(Assertions.scala:1089)
> 	at org.scalatest.FunSuite.fail(FunSuite.scala:1560)
> 	at org.apache.spark.sql.streaming.StreamTest$class.failTest$1(StreamTest.scala:458)
> 	at org.apache.spark.sql.streaming.StreamTest$class.executeAction$1(StreamTest.scala:660)
> 	at org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:775)
> 	at org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:762)
> 	at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
> 	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35)
> 	at org.apache.spark.sql.streaming.StreamTest$class.liftedTree1$1(StreamTest.scala:762)
> 	at org.apache.spark.sql.streaming.StreamTest$class.testStream(StreamTest.scala:761)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite.testStream(FlatMapGroupsWithStateSuite.scala:48)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$15.apply$mcV$sp(FlatMapGroupsWithStateSuite.scala:769)
> 	at org.apache.spark.sql.catalyst.plans.PlanTestBase$class.withSQLConf(PlanTest.scala:176)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite.org$apache$spark$sql$test$SQLTestUtilsBase$$super$withSQLConf(FlatMapGroupsWithStateSuite.scala:48)
> 	at org.apache.spark.sql.test.SQLTestUtilsBase$class.withSQLConf(SQLTestUtils.scala:192)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite.withSQLConf(FlatMapGroupsWithStateSuite.scala:48)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$testWithAllStateVersions$1$$anonfun$apply$mcVI$sp$1.apply$mcV$sp(FlatMapGroupsWithStateSuite.scala:1277)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$testWithAllStateVersions$1$$anonfun$apply$mcVI$sp$1.apply(FlatMapGroupsWithStateSuite.scala:1277)
> 	at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$testWithAllStateVersions$1$$anonfun$apply$mcVI$sp$1.apply(FlatMapGroupsWithStateSuite.scala:1277)
> 	at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
> 	at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
> 	at org.scalatest.Transformer.apply(Transformer.scala:22)
> 	at org.scalatest.Transformer.apply(Transformer.scala:20)
> 	at org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186)
> 	at org.apache.spark.SparkFunSuite.withFixture(SparkFunSuite.scala:76)
> 	at org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:183)
> 	at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
> 	at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
> 	at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
> 	at org.scalatest.FunSuiteLike$class.runTest(FunSuiteLike.scala:196)
> 	at org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterEach$$super$runTest(SparkFunSuite.scala:36)
> 	at org.scalatest.BeforeAndAfterEach$class.runTest(BeforeAndAfterEach.scala:221)
> 	at org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:36)
> 	at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:229)
> 	at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:229)
> 	at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396)
> 	at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384)
> 	at scala.collection.immutable.List.foreach(List.scala:381)
> 	at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
> 	at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379)
> 	at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461)
> 	at org.scalatest.FunSuiteLike$class.runTests(FunSuiteLike.scala:229)
> 	at org.scalatest.FunSuite.runTests(FunSuite.scala:1560)
> 	at org.scalatest.Suite$class.run(Suite.scala:1147)
> 	at org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560)
> 	at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:233)
> 	at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:233)
> 	at org.scalatest.SuperEngine.runImpl(Engine.scala:521)
> 	at org.scalatest.FunSuiteLike$class.run(FunSuiteLike.scala:233)
> 	at org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:36)
> 	at org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:213)
> 	at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:210)
> 	at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:36)
> 	at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:314)
> 	at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:480)
> 	at sbt.ForkMain$Run$2.call(ForkMain.java:296)
> 	at sbt.ForkMain$Run$2.call(ForkMain.java:286)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> 	at java.lang.Thread.run(Thread.java:748)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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