From b93bf5600e4a4e38666a8ee81a8df32c57aa1610 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Wed, 30 Apr 2025 15:40:38 +0200 Subject: [PATCH] Turbopack: avoid tracking a modification when adding an already existing item --- turbopack/crates/turbo-tasks-backend/src/backend/mod.rs | 4 ++-- .../crates/turbo-tasks-backend/src/backend/operation/mod.rs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs b/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs index 4611fc407e0da..9fe9c758bed91 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs @@ -1501,7 +1501,7 @@ impl TurboTasksBackendInner { // handle stateful if stateful { - task.insert(CachedDataItem::Stateful { value: () }); + let _ = task.add(CachedDataItem::Stateful { value: () }); } // handle cell counters: update max index and remove cells that are no longer used @@ -1938,7 +1938,7 @@ impl TurboTasksBackendInner { .entry(RawVc::TaskCell(collectible.task, collectible.cell)) .or_insert(0) += count; } - task.insert(CachedDataItem::CollectiblesDependent { + let _ = task.add(CachedDataItem::CollectiblesDependent { collectible_type, task: reader_id, value: (), diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs b/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs index e1a43103929ac..7584731bcaaaa 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs @@ -14,7 +14,7 @@ use std::{ }; use serde::{Deserialize, Serialize}; -use turbo_tasks::{SessionId, TaskId, TurboTasksBackendApi}; +use turbo_tasks::{KeyValuePair, SessionId, TaskId, TurboTasksBackendApi}; use crate::{ backend::{ @@ -466,6 +466,9 @@ impl TaskGuard for TaskGuardImpl<'_, B> { let category = item.category(); self.check_access(category); if !self.task_id.is_transient() && item.is_persistent() { + if self.task.contains_key(&item.key()) { + return false; + } self.task.track_modification(category.into_specific()); } self.task.add(item)