refactor: unify Memory feature configuration authority
This commit is contained in:
@@ -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}"),
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user