huskies: merge 862
This commit is contained in:
@@ -54,6 +54,17 @@ pub fn write_merge_job(
|
||||
.into();
|
||||
apply_and_persist(&mut state, |s| s.crdt.doc.merge_jobs.insert(ROOT_ID, entry));
|
||||
state.merge_job_index = rebuild_merge_job_index(&state.crdt);
|
||||
// After inserting a new entry via JSON, explicitly set the error field via
|
||||
// .set() so that entry.error.view() returns the correct value immediately.
|
||||
// The JSON insert path initialises LWW fields, but an explicit .set() is
|
||||
// required for the stale-merge reaper to read the field reliably via .view().
|
||||
if let Some(e) = error
|
||||
&& let Some(&idx) = state.merge_job_index.get(story_id)
|
||||
{
|
||||
apply_and_persist(&mut state, |s| {
|
||||
s.crdt.doc.merge_jobs[idx].error.set(e.to_string())
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -183,6 +183,31 @@ fn merge_job_insert_update_delete() {
|
||||
assert!(read_merge_job("100").is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn merge_job_error_field_readable_after_insert() {
|
||||
// Regression: the error field must be readable via read_all_merge_jobs()
|
||||
// immediately after a fresh insert so that the stale-merge reaper can
|
||||
// decode server_start_time from it (None → treated as legacy/stale).
|
||||
init_for_test();
|
||||
write_merge_job(
|
||||
"test_error_field",
|
||||
"running",
|
||||
1.0,
|
||||
None,
|
||||
Some("{\"server_start\":9999999.0}"),
|
||||
);
|
||||
let all = read_all_merge_jobs().unwrap_or_default();
|
||||
let entry = all
|
||||
.iter()
|
||||
.find(|v| v.story_id == "test_error_field")
|
||||
.expect("entry must exist in read_all");
|
||||
assert_eq!(
|
||||
entry.error.as_deref(),
|
||||
Some("{\"server_start\":9999999.0}"),
|
||||
"error field must be readable via view() after a fresh insert"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn active_agent_insert_update_delete() {
|
||||
init_for_test();
|
||||
|
||||
Reference in New Issue
Block a user