fix incorrect async work ordering in dbgi layer

This commit is contained in:
Ryan Fleury
2024-11-03 12:48:34 -08:00
parent 9ce0bc5dbf
commit c3a672cd02
+6 -5
View File
@@ -331,7 +331,8 @@ di_open(DI_Key *key)
node->ref_count += 1;
if(node->ref_count == 1)
{
di_u2p_enqueue_key(&key_normalized, max_U64);
di_u2p_enqueue_key(&key_normalized, max_U64);
async_push_work(di_parse_work);
}
}
}
@@ -448,11 +449,11 @@ di_rdi_from_key(DI_Scope *scope, DI_Key *key, U64 endt_us)
//- rjf: parse not done, not working -> ask for parse
if(node != 0 &&
!node->parse_done &&
ins_atomic_u64_eval(&node->request_count) == ins_atomic_u64_eval(&node->completion_count) &&
async_push_work(di_parse_work, .endt_us = endt_us, .completion_counter = &node->completion_count))
{
di_u2p_enqueue_key(&key_normalized, max_U64);
ins_atomic_u64_eval(&node->request_count) == ins_atomic_u64_eval(&node->completion_count) &&
di_u2p_enqueue_key(&key_normalized, endt_us))
{
ins_atomic_u64_inc_eval(&node->request_count);
async_push_work(di_parse_work, .completion_counter = &node->completion_count);
}
//- rjf: time expired -> break