refactor: unify Memory feature configuration authority

This commit is contained in:
2026-09-04 22:55:37 +09:00
parent 5ee77698db
commit 1e674d70c2
20 changed files with 947 additions and 637 deletions
+9 -15
View File
@@ -759,8 +759,8 @@ fn migrate_worker_aggregate_document(
.get_mut("resolved_manifest_snapshot")
.filter(|snapshot| !snapshot.is_null())
{
let manifest: manifest::WorkerManifest =
serde_json::from_value(snapshot.clone()).map_err(|error| {
let mut manifest = manifest::read_persisted_worker_manifest_snapshot(snapshot.clone())
.map_err(|error| {
runtime_store_corrupt(
metadata_path,
format!("decode Worker aggregate resolved manifest snapshot: {error}"),
@@ -775,20 +775,14 @@ fn migrate_worker_aggregate_document(
),
));
}
snapshot
.as_object_mut()
.and_then(|manifest| manifest.get_mut("worker"))
.and_then(serde_json::Value::as_object_mut)
.ok_or_else(|| {
manifest.worker.name = expected_name.clone();
*snapshot =
manifest::write_persisted_worker_manifest_snapshot(&manifest).map_err(|error| {
runtime_store_corrupt(
metadata_path,
"Worker aggregate resolved manifest is missing worker metadata".to_string(),
format!("encode migrated Worker aggregate resolved manifest: {error}"),
)
})?
.insert(
"name".to_string(),
serde_json::Value::String(expected_name.clone()),
);
})?;
}
metadata.insert(
"worker_name".to_string(),
@@ -809,8 +803,8 @@ fn migrate_worker_aggregate_document(
));
}
if let Some(snapshot) = metadata.resolved_manifest_snapshot {
let manifest: manifest::WorkerManifest =
serde_json::from_value(snapshot).map_err(|error| {
let manifest =
manifest::read_persisted_worker_manifest_snapshot(snapshot).map_err(|error| {
runtime_store_corrupt(
metadata_path,
format!("decode migrated Worker aggregate resolved manifest: {error}"),
+20 -6
View File
@@ -746,9 +746,15 @@ fn bind_workspace_memory_settings(
));
}
manifest
.feature
.memory
.get_or_insert_with(manifest::MemoryConfig::default)
.bind_workspace_settings(snapshot);
.bind_workspace_settings(snapshot.clone())
.map_err(str::to_string)?;
manifest
.feature
.memory
.validate_execution()
.map_err(str::to_string)?;
Ok(())
}
@@ -759,10 +765,18 @@ fn validate_worker_memory_settings(
let Some(expected) = request.memory_settings.as_ref() else {
return Ok(());
};
let actual = manifest
manifest
.feature
.memory
.as_ref()
.and_then(manifest::MemoryConfig::workspace_settings)
.validate_execution()
.map_err(str::to_string)?;
if !manifest.feature.memory.profile.enabled {
return Ok(());
}
let actual = manifest
.feature
.memory
.workspace_settings()
.ok_or_else(|| {
"Workspace Worker restored without its bound Memory settings snapshot".to_string()
})?;
@@ -3165,7 +3179,7 @@ mod tests {
Some(session_store::WorkerActiveSegmentRef::pending_segment(
session_id,
)),
Some(serde_json::to_value(&manifest).unwrap()),
Some(manifest::write_persisted_worker_manifest_snapshot(&manifest).unwrap()),
)
.unwrap();