Skip to content

Commit 999002d

Browse files
committed
Remove session id from data entries and make them transient for the current session
1 parent c767498 commit 999002d

File tree

5 files changed

+111
-200
lines changed

5 files changed

+111
-200
lines changed

turbopack/crates/turbo-tasks-backend/src/backend/mod.rs

Lines changed: 33 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -557,10 +557,10 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
557557
}
558558
}
559559

560-
let is_dirty = task.is_dirty(self.session_id);
560+
let is_dirty = task.is_dirty();
561561

562562
// Check the dirty count of the root node
563-
let dirty_tasks = task.dirty_container_count(self.session_id);
563+
let dirty_tasks = task.dirty_container_count();
564564
if dirty_tasks > 0 || is_dirty {
565565
let activeness = get_mut!(task, Activeness);
566566
let mut task_ids_to_schedule: Vec<_> = Vec::new();
@@ -579,7 +579,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
579579
.set_active_until_clean();
580580
if ctx.should_track_activeness() {
581581
// A newly added Activeness need to make sure to schedule the tasks
582-
task_ids_to_schedule = task.dirty_containers(self.session_id).collect();
582+
task_ids_to_schedule = task.dirty_containers().collect();
583583
task_ids_to_schedule.push(task_id);
584584
}
585585
get!(task, Activeness).unwrap()
@@ -603,7 +603,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
603603
visited: &mut FxHashSet<TaskId>,
604604
) -> String {
605605
let task = ctx.task(task_id, TaskDataCategory::Data);
606-
let is_dirty = task.is_dirty(ctx.session_id());
606+
let is_dirty = task.is_dirty();
607607
let in_progress =
608608
get!(task, InProgress).map_or("not in progress", |p| match p {
609609
InProgressState::InProgress(_) => "in progress",
@@ -624,7 +624,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
624624
};
625625

626626
// Check the dirty count of the root node
627-
let dirty_tasks = task.dirty_container_count(ctx.session_id());
627+
let dirty_tasks = task.dirty_container_count();
628628

629629
let task_description = ctx.get_task_description(task_id);
630630
let is_dirty = if is_dirty { ", dirty" } else { "" };
@@ -637,8 +637,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
637637
"{task_id} {task_description}{count} (aggr={aggregation_number}, \
638638
{in_progress}, {activeness}{is_dirty})",
639639
);
640-
let children: Vec<_> =
641-
task.dirty_containers_with_count(ctx.session_id()).collect();
640+
let children: Vec<_> = task.dirty_containers_with_count().collect();
642641
drop(task);
643642

644643
if missing_upper {
@@ -2288,33 +2287,28 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
22882287

22892288
// Grab the old dirty state
22902289
let old_dirtyness = get!(task, Dirty).cloned();
2291-
let (was_dirty, was_current_session_clean, old_clean_in_session) = match old_dirtyness {
2292-
None => (false, false, None),
2293-
Some(Dirtyness::Dirty) => (true, false, None),
2290+
let (was_dirty, was_current_session_clean) = match old_dirtyness {
2291+
None => (false, false),
2292+
Some(Dirtyness::Dirty) => (true, false),
22942293
Some(Dirtyness::SessionDependent) => {
2295-
let clean_in_session = get!(task, CleanInSession).copied();
2296-
(
2297-
true,
2298-
clean_in_session == Some(self.session_id),
2299-
clean_in_session,
2300-
)
2294+
let clean_in_current_session = get!(task, CurrentSessionClean).is_some();
2295+
(true, clean_in_current_session)
23012296
}
23022297
};
23032298
let old_dirty_value = if was_dirty { 1 } else { 0 };
23042299
let old_current_session_clean_value = if was_current_session_clean { 1 } else { 0 };
23052300

23062301
// Compute the new dirty state
2307-
let (new_dirtyness, new_clean_in_session, new_dirty_value, new_current_session_clean_value) =
2308-
if session_dependent {
2309-
(
2310-
Some(Dirtyness::SessionDependent),
2311-
Some(self.session_id),
2312-
1,
2313-
1,
2314-
)
2315-
} else {
2316-
(None, None, 0, 0)
2317-
};
2302+
let (
2303+
new_dirtyness,
2304+
new_clean_in_current_session,
2305+
new_dirty_value,
2306+
new_current_session_clean_value,
2307+
) = if session_dependent {
2308+
(Some(Dirtyness::SessionDependent), true, 1, 1)
2309+
} else {
2310+
(None, false, 0, 0)
2311+
};
23182312

23192313
// Update the dirty state
23202314
if old_dirtyness != new_dirtyness {
@@ -2324,11 +2318,11 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
23242318
task.remove(&CachedDataItemKey::Dirty {});
23252319
}
23262320
}
2327-
if old_clean_in_session != new_clean_in_session {
2328-
if let Some(session_id) = new_clean_in_session {
2329-
task.insert(CachedDataItem::CleanInSession { value: session_id });
2330-
} else if old_clean_in_session.is_some() {
2331-
task.remove(&CachedDataItemKey::CleanInSession {});
2321+
if was_current_session_clean != new_clean_in_current_session {
2322+
if new_clean_in_current_session {
2323+
task.insert(CachedDataItem::CurrentSessionClean { value: () });
2324+
} else if was_current_session_clean {
2325+
task.remove(&CachedDataItemKey::CurrentSessionClean {});
23322326
}
23332327
}
23342328

@@ -2339,14 +2333,10 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
23392333
let dirty_container_count = get!(task, AggregatedDirtyContainerCount)
23402334
.cloned()
23412335
.unwrap_or_default();
2342-
let current_session_clean_container_count = get!(
2343-
task,
2344-
AggregatedSessionDependentCleanContainerCount {
2345-
session_id: self.session_id
2346-
}
2347-
)
2348-
.copied()
2349-
.unwrap_or_default();
2336+
let current_session_clean_container_count =
2337+
get!(task, AggregatedCurrentSessionCleanContainerCount)
2338+
.copied()
2339+
.unwrap_or_default();
23502340
let result = ComputeDirtyAndCleanUpdate {
23512341
old_dirty_container_count: dirty_container_count,
23522342
new_dirty_container_count: dirty_container_count,
@@ -2837,8 +2827,8 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
28372827

28382828
let mut ctx = self.execute_context(turbo_tasks);
28392829
let mut task = ctx.task(task_id, TaskDataCategory::All);
2840-
let is_dirty = task.is_dirty(self.session_id);
2841-
let has_dirty_containers = task.dirty_container_count(self.session_id) > 0;
2830+
let is_dirty = task.is_dirty();
2831+
let has_dirty_containers = task.dirty_container_count() > 0;
28422832
if is_dirty || has_dirty_containers {
28432833
if let Some(activeness_state) = get_mut!(task, Activeness) {
28442834
// We will finish the task, but it would be removed after the task is done
@@ -2928,7 +2918,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
29282918
}
29292919

29302920
let is_dirty = get!(task, Dirty).is_some();
2931-
let has_dirty_container = task.dirty_container_count(self.session_id) > 0;
2921+
let has_dirty_container = task.dirty_container_count() > 0;
29322922
let should_be_in_upper = is_dirty || has_dirty_container;
29332923

29342924
let aggregation_number = get_aggregation_number(&task);

0 commit comments

Comments
 (0)