@@ -28,8 +28,8 @@ use tokio::time::{Duration, Instant};
2828use  tracing:: { Span ,  field:: Empty ,  info_span,  trace_span} ; 
2929use  turbo_tasks:: { 
3030    CellId ,  FxDashMap ,  FxIndexMap ,  KeyValuePair ,  RawVc ,  ReadCellOptions ,  ReadConsistency , 
31-     SessionId ,   TRANSIENT_TASK_BIT ,   TaskExecutionReason ,   TaskId ,   TraitTypeId ,   TurboTasksBackendApi , 
32-     ValueTypeId , 
31+     ReadOutputOptions ,   ReadTracking ,   SessionId ,   TRANSIENT_TASK_BIT ,   TaskExecutionReason ,   TaskId , 
32+     TraitTypeId ,   TurboTasksBackendApi ,   ValueTypeId , 
3333    backend:: { 
3434        Backend ,  CachedTaskType ,  CellContent ,  TaskExecutionSpec ,  TransientTaskRoot , 
3535        TransientTaskType ,  TurboTasksExecutionError ,  TypedCellContent , 
@@ -458,7 +458,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
458458        self :  & Arc < Self > , 
459459        task_id :  TaskId , 
460460        reader :  Option < TaskId > , 
461-         consistency :   ReadConsistency , 
461+         options :   ReadOutputOptions , 
462462        turbo_tasks :  & dyn  TurboTasksBackendApi < TurboTasksBackend < B > > , 
463463    )  -> Result < Result < RawVc ,  EventListener > >  { 
464464        self . assert_not_persistent_calling_transient ( reader,  task_id,  /* cell_id */  None ) ; 
@@ -469,15 +469,16 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
469469        fn  listen_to_done_event < B :  BackingStorage > ( 
470470            this :  & TurboTasksBackendInner < B > , 
471471            reader :  Option < TaskId > , 
472+             tracking :  ReadTracking , 
472473            done_event :  & Event , 
473474        )  -> EventListener  { 
474475            done_event. listen_with_note ( move  || { 
475476                let  reader_desc = reader. map ( |r| this. get_task_desc_fn ( r) ) ; 
476477                move  || { 
477478                    if  let  Some ( reader_desc)  = reader_desc. as_ref ( )  { 
478-                         format ! ( "try_read_task_output from {}" ,  reader_desc( ) ) 
479+                         format ! ( "try_read_task_output from {} ({}) " ,  reader_desc( ) ,  tracking ) 
479480                    }  else  { 
480-                         "try_read_task_output (untracked)"  . to_string ( ) 
481+                         format ! ( "try_read_task_output ({})"  ,  tracking ) 
481482                    } 
482483                } 
483484            } ) 
@@ -487,16 +488,19 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
487488            this :  & TurboTasksBackendInner < B > , 
488489            task :  & impl  TaskGuard , 
489490            reader :  Option < TaskId > , 
491+             tracking :  ReadTracking , 
490492            ctx :  & impl  ExecuteContext < ' _ > , 
491493        )  -> Option < std:: result:: Result < std:: result:: Result < RawVc ,  EventListener > ,  anyhow:: Error > > 
492494        { 
493495            match  get ! ( task,  InProgress )  { 
494-                 Some ( InProgressState :: Scheduled  {  done_event,  .. } )  => { 
495-                     Some ( Ok ( Err ( listen_to_done_event ( this,  reader,  done_event) ) ) ) 
496-                 } 
496+                 Some ( InProgressState :: Scheduled  {  done_event,  .. } )  => Some ( Ok ( Err ( 
497+                     listen_to_done_event ( this,  reader,  tracking ,   done_event) , 
498+                 ) ) ) , 
497499                Some ( InProgressState :: InProgress ( box InProgressStateInner  { 
498500                    done_event,  ..
499-                 } ) )  => Some ( Ok ( Err ( listen_to_done_event ( this,  reader,  done_event) ) ) ) , 
501+                 } ) )  => Some ( Ok ( Err ( listen_to_done_event ( 
502+                     this,  reader,  tracking,  done_event, 
503+                 ) ) ) ) , 
500504                Some ( InProgressState :: Canceled )  => Some ( Err ( anyhow:: anyhow!( 
501505                    "{} was canceled" , 
502506                    ctx. get_task_description( task. id( ) ) 
@@ -505,7 +509,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
505509            } 
506510        } 
507511
508-         if  matches ! ( consistency,  ReadConsistency :: Strong )  { 
512+         if  matches ! ( options . consistency,  ReadConsistency :: Strong )  { 
509513            // Ensure it's an root node 
510514            loop  { 
511515                let  aggregation_number = get_aggregation_number ( & task) ; 
@@ -687,7 +691,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
687691            } 
688692        } 
689693
690-         if  let  Some ( value)  = check_in_progress ( self ,  & task,  reader,  & ctx)  { 
694+         if  let  Some ( value)  = check_in_progress ( self ,  & task,  reader,  options . tracking ,   & ctx)  { 
691695            return  value; 
692696        } 
693697
@@ -705,6 +709,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
705709            } ; 
706710            if  self . should_track_dependencies ( ) 
707711                && let  Some ( reader)  = reader
712+                 && options. tracking . should_track ( result. is_err ( ) ) 
708713                && ( !task. is_immutable ( )  || cfg ! ( feature = "verify_immutable" ) ) 
709714            { 
710715                let  _ = task. add ( CachedDataItem :: OutputDependent  { 
@@ -810,7 +815,9 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
810815            None 
811816        } ; 
812817        if  let  Some ( content)  = content { 
813-             add_cell_dependency ( self ,  task,  reader,  cell,  task_id,  & mut  ctx) ; 
818+             if  options. tracking . should_track ( false )  { 
819+                 add_cell_dependency ( self ,  task,  reader,  cell,  task_id,  & mut  ctx) ; 
820+             } 
814821            return  Ok ( Ok ( TypedCellContent ( 
815822                cell. type_id , 
816823                CellContent ( Some ( content. reference ) ) , 
@@ -835,14 +842,18 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
835842        ) 
836843        . copied ( ) ; 
837844        let  Some ( max_id)  = max_id else  { 
838-             add_cell_dependency ( self ,  task,  reader,  cell,  task_id,  & mut  ctx) ; 
845+             if  options. tracking . should_track ( true )  { 
846+                 add_cell_dependency ( self ,  task,  reader,  cell,  task_id,  & mut  ctx) ; 
847+             } 
839848            bail ! ( 
840849                "Cell {cell:?} no longer exists in task {} (no cell of this type exists)" , 
841850                ctx. get_task_description( task_id) 
842851            ) ; 
843852        } ; 
844853        if  cell. index  >= max_id { 
845-             add_cell_dependency ( self ,  task,  reader,  cell,  task_id,  & mut  ctx) ; 
854+             if  options. tracking . should_track ( true )  { 
855+                 add_cell_dependency ( self ,  task,  reader,  cell,  task_id,  & mut  ctx) ; 
856+             } 
846857            bail ! ( 
847858                "Cell {cell:?} no longer exists in task {} (index out of bounds)" , 
848859                ctx. get_task_description( task_id) 
@@ -2457,7 +2468,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
24572468        } ) 
24582469    } 
24592470
2460-     fn  try_read_own_task_cell_untracked ( 
2471+     fn  try_read_own_task_cell ( 
24612472        & self , 
24622473        task_id :  TaskId , 
24632474        cell :  CellId , 
@@ -3139,11 +3150,11 @@ impl<B: BackingStorage> Backend for TurboTasksBackend<B> {
31393150        & self , 
31403151        task_id :  TaskId , 
31413152        reader :  Option < TaskId > , 
3142-         consistency :   ReadConsistency , 
3153+         options :   ReadOutputOptions , 
31433154        turbo_tasks :  & dyn  TurboTasksBackendApi < Self > , 
31443155    )  -> Result < Result < RawVc ,  EventListener > >  { 
31453156        self . 0 
3146-             . try_read_task_output ( task_id,  reader,  consistency ,  turbo_tasks) 
3157+             . try_read_task_output ( task_id,  reader,  options ,  turbo_tasks) 
31473158    } 
31483159
31493160    fn  try_read_task_cell ( 
@@ -3158,15 +3169,15 @@ impl<B: BackingStorage> Backend for TurboTasksBackend<B> {
31583169            . try_read_task_cell ( task_id,  reader,  cell,  options,  turbo_tasks) 
31593170    } 
31603171
3161-     fn  try_read_own_task_cell_untracked ( 
3172+     fn  try_read_own_task_cell ( 
31623173        & self , 
31633174        task_id :  TaskId , 
31643175        cell :  CellId , 
31653176        options :  ReadCellOptions , 
31663177        turbo_tasks :  & dyn  TurboTasksBackendApi < Self > , 
31673178    )  -> Result < TypedCellContent >  { 
31683179        self . 0 
3169-             . try_read_own_task_cell_untracked ( task_id,  cell,  options,  turbo_tasks) 
3180+             . try_read_own_task_cell ( task_id,  cell,  options,  turbo_tasks) 
31703181    } 
31713182
31723183    fn  read_task_collectibles ( 
0 commit comments