viirya commented on code in PR #53358:
URL: https://github.com/apache/spark/pull/53358#discussion_r2594427339
##########
sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala:
##########
@@ -2878,6 +2878,24 @@ class DatasetSuite extends QueryTest
checkDataset(Seq(seqMutableSet).toDS(), seqMutableSet)
checkDataset(Seq(mapMutableSet).toDS(), mapMutableSet)
}
+
+ test("SPARK-54620: Observation should not blocking forever") {
+ val observation = Observation("row_count")
+
+ var df = Seq.empty[(Int, Int)].toDF("v1", "v2")
+ df = df.observe(observation,
+ functions.count(functions.lit(1)).alias("record_cnt"))
+ df = df.repartition($"v1")
+ .select($"v1" + 1 as "v1", $"v2" + 1 as "v2")
+ .join(
+ Seq((1, 2), (3, 4)).toDF("v1", "v2").repartition($"v2"),
+ Seq("v1"),
+ "inner")
+ df.collect()
+
+ val metrics = observation.get
Review Comment:
This is a trade-off. For now, I choose to not change empty relation
propagation logic but let Spark return empty map. Because users can easily
check the metric key on the returned map to know if there is collected metric
or not. It also doesn't change current working behavior because these cases
will block `Observation.get` call forever.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]