You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Issue #740 recorded a negative finding from PR #731: the CRDT perf rep stos bar is not caused by the per-row timestamp memset in col_join_append_pair. That memset compiles inline and should not be retried as the target.
The likely hot site remains the full arrangement rebuild path:
wirelog/columnar/arrangement.c: arr_build_full() clears arr->ht_head with memset(arr->ht_head, 0xFF, nbuckets * sizeof(uint32_t)) before rebuilding chains.
CRDT recursive strata can trigger repeated full arrangement rebuilds as the right-side IDB grows.
Proposed direction
Investigate replacing the full ht_head clear with versioned bucket heads, for example:
Add a generation/version side array or tagged bucket-head representation to col_arrangement_t.
Increment the arrangement build generation on full rebuild instead of clearing every bucket.
Treat a bucket as empty when its stored generation differs from the current build generation.
Preserve existing UINT32_MAX/chain semantics or migrate them carefully.
This likely changes col_arrangement_t layout, so update the layout sentinel in tests/test_arrangement.c intentionally if the design lands.
Background
Issue #740 recorded a negative finding from PR #731: the CRDT perf
rep stosbar is not caused by the per-row timestamp memset incol_join_append_pair. That memset compiles inline and should not be retried as the target.The likely hot site remains the full arrangement rebuild path:
wirelog/columnar/arrangement.c:arr_build_full()clearsarr->ht_headwithmemset(arr->ht_head, 0xFF, nbuckets * sizeof(uint32_t))before rebuilding chains.Proposed direction
Investigate replacing the full
ht_headclear with versioned bucket heads, for example:col_arrangement_t.UINT32_MAX/chain semantics or migrate them carefully.This likely changes
col_arrangement_tlayout, so update the layout sentinel intests/test_arrangement.cintentionally if the design lands.Acceptance criteria
col_join_append_pair; do-not-retry: lazy timestamp memset in col_join_append_pair (wrong target) #740 established that as the wrong target.References
wirelog/columnar/arrangement.c::arr_build_fullwirelog/columnar/columnar_nanoarrow.h::col_arrangement_ttests/test_arrangement.clayout sentinel