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

ASF GitHub Bot updated SPARK-58412:
-----------------------------------
    Labels: pull-request-available  (was: )

> Incorrect cache statistics after partial materialization or cache rebuild
> -------------------------------------------------------------------------
>
>                 Key: SPARK-58412
>                 URL: https://issues.apache.org/jira/browse/SPARK-58412
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 4.2.0
>            Reporter: Chao Sun
>            Priority: Major
>              Labels: pull-request-available
>
> CachedRDDBuilder can publish incorrect materialization statistics in two 
> lifecycle cases.
> First, a task completion listener currently records per-partition row and 
> byte counts whenever a task finishes successfully, even if the cache-building 
> iterator was not exhausted. This can happen when a MEMORY_ONLY block cannot 
> be stored and the partially unrolled iterator is returned to a downstream 
> consumer that stops early. Because PartitionKeyedAccumulator is 
> last-write-wins per partition, a partial recomputation can replace a complete 
> value, such as (10 rows, N bytes), with (0 rows, 0 bytes) while leaving the 
> partition key present. InMemoryRelation can therefore still appear fully 
> materialized and AQE may treat a non-empty cache as empty.
> Second, clearCache resets the current accumulator in place. Tasks from the 
> retired cache generation have already captured that same accumulator. Their 
> late completions can write old partition keys and values after the reset, 
> contaminating the rebuilt generation and potentially making it appear 
> complete before its own partitions finish.
> The fix should:
> * publish partition statistics only after the wrapped iterator is fully 
> consumed and the task completes successfully; and
> * install a new PartitionKeyedAccumulator for every cache generation instead 
> of resetting the previous accumulator.
> This issue is related to SPARK-57547, which introduced partition-keyed 
> materialization bookkeeping and is present in Spark 4.2.0. The fixes apply to 
> general InMemoryRelation cache bookkeeping and are independent of runtime 
> Bloom filters.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to