@@ -107,8 +107,9 @@ where
107
107
}
108
108
109
109
if let Some ( mcs) = self . maybe_changed_after_cold (
110
- zalsa,
111
110
db,
111
+ zalsa,
112
+ zalsa_local,
112
113
id,
113
114
revision,
114
115
memo_ingredient_index,
@@ -122,37 +123,41 @@ where
122
123
}
123
124
124
125
#[ inline( never) ]
126
+ #[ allow( clippy:: too_many_arguments) ]
125
127
fn maybe_changed_after_cold < ' db > (
126
128
& ' db self ,
127
- zalsa : & Zalsa ,
128
129
db : & ' db C :: DbView ,
130
+ zalsa : & Zalsa ,
131
+ zalsa_local : & ZalsaLocal ,
129
132
key_index : Id ,
130
133
revision : Revision ,
131
134
memo_ingredient_index : MemoIngredientIndex ,
132
135
in_cycle : bool ,
133
136
) -> Option < VerifyResult > {
134
- let database_key_index = self . database_key_index ( key_index) ;
135
-
136
137
let _claim_guard = match self . sync_table . try_claim ( zalsa, key_index) {
137
138
ClaimResult :: Retry => return None ,
138
139
ClaimResult :: Cycle => match C :: CYCLE_STRATEGY {
139
- CycleRecoveryStrategy :: Panic => db. zalsa_local ( ) . with_query_stack ( |stack| {
140
- panic ! (
141
- "dependency graph cycle when validating {database_key_index:#?}, \
140
+ CycleRecoveryStrategy :: Panic => {
141
+ let database_key_index = self . database_key_index ( key_index) ;
142
+ zalsa_local. with_query_stack ( |stack| {
143
+ panic ! (
144
+ "dependency graph cycle when validating {database_key_index:#?}, \
142
145
set cycle_fn/cycle_initial to fixpoint iterate.\n \
143
146
Query stack:\n {stack:#?}",
144
- ) ;
145
- } ) ,
147
+ ) ;
148
+ } )
149
+ }
146
150
CycleRecoveryStrategy :: FallbackImmediate => {
147
151
return Some ( VerifyResult :: unchanged ( ) ) ;
148
152
}
149
153
CycleRecoveryStrategy :: Fixpoint => {
150
154
tracing:: debug!(
151
- "hit cycle at {database_key_index:?} in `maybe_changed_after`, returning fixpoint initial value" ,
155
+ "hit cycle at {:?} in `maybe_changed_after`, returning fixpoint initial value" ,
156
+ self . database_key_index( key_index)
152
157
) ;
153
158
return Some ( VerifyResult :: Unchanged (
154
159
InputAccumulatedValues :: Empty ,
155
- CycleHeads :: initial ( database_key_index) ,
160
+ CycleHeads :: initial ( self . database_key_index ( key_index ) ) ,
156
161
) ) ;
157
162
}
158
163
} ,
@@ -165,13 +170,20 @@ where
165
170
} ;
166
171
167
172
tracing:: debug!(
168
- "{database_key_index :?}: maybe_changed_after_cold, successful claim, \
173
+ "{:?}: maybe_changed_after_cold, successful claim, \
169
174
revision = {revision:?}, old_memo = {old_memo:#?}",
170
- old_memo = old_memo. tracing_debug( )
175
+ self . database_key_index( key_index) ,
176
+ old_memo = old_memo. tracing_debug( ) ,
171
177
) ;
172
178
173
179
// Check if the inputs are still valid. We can just compare `changed_at`.
174
- let deep_verify = self . deep_verify_memo ( db, zalsa, old_memo, database_key_index) ;
180
+ let deep_verify = self . deep_verify_memo (
181
+ db,
182
+ zalsa,
183
+ zalsa_local,
184
+ old_memo,
185
+ self . database_key_index ( key_index) ,
186
+ ) ;
175
187
if deep_verify. is_unchanged ( ) {
176
188
return Some ( if old_memo. revisions . changed_at > revision {
177
189
VerifyResult :: Changed ( deep_verify. into_cycle_heads ( ) )
@@ -194,7 +206,7 @@ where
194
206
// `in_cycle` tracks if the enclosing query is in a cycle. `deep_verify.cycle_heads` tracks
195
207
// if **this query** encountered a cycle (which means there's some provisional value somewhere floating around).
196
208
if old_memo. value . is_some ( ) && !in_cycle && deep_verify. cycle_heads ( ) . is_empty ( ) {
197
- let active_query = db . zalsa_local ( ) . push_query ( database_key_index, 0 ) ;
209
+ let active_query = zalsa_local. push_query ( self . database_key_index ( key_index ) , 0 ) ;
198
210
let memo = self . execute ( db, active_query, Some ( old_memo) ) ;
199
211
let changed_at = memo. revisions . changed_at ;
200
212
@@ -375,6 +387,7 @@ where
375
387
& self ,
376
388
db : & C :: DbView ,
377
389
zalsa : & Zalsa ,
390
+ zalsa_local : & ZalsaLocal ,
378
391
old_memo : & Memo < C :: Output < ' _ > > ,
379
392
database_key_index : DatabaseKeyIndex ,
380
393
) -> VerifyResult {
@@ -386,12 +399,7 @@ where
386
399
let shallow_update = self . shallow_verify_memo ( zalsa, database_key_index, old_memo) ;
387
400
let shallow_update_possible = shallow_update. is_some ( ) ;
388
401
if let Some ( shallow_update) = shallow_update {
389
- if self . validate_may_be_provisional (
390
- zalsa,
391
- db. zalsa_local ( ) ,
392
- database_key_index,
393
- old_memo,
394
- ) {
402
+ if self . validate_may_be_provisional ( zalsa, zalsa_local, database_key_index, old_memo) {
395
403
self . update_shallow ( zalsa, database_key_index, old_memo, shallow_update) ;
396
404
397
405
return VerifyResult :: unchanged ( ) ;
0 commit comments