feat(cmf): live-apply managed-server changes; auto-resolve import id collisions
Docker / publish (push) Canceled after 0s
Release / crates-io (push) Canceled after 0s
Release / release (macos-14, aarch64-apple-darwin) (push) Canceled after 0s
Release / release (ubuntu-latest, x86_64-unknown-linux-gnu) (push) Canceled after 0s
Release / release (windows-latest, x86_64-pc-windows-msvc) (push) Canceled after 0s
Docker / publish (push) Canceled after 0s
Release / crates-io (push) Canceled after 0s
Release / release (macos-14, aarch64-apple-darwin) (push) Canceled after 0s
Release / release (ubuntu-latest, x86_64-unknown-linux-gnu) (push) Canceled after 0s
Release / release (windows-latest, x86_64-pc-windows-msvc) (push) Canceled after 0s
- Saving the Local models list now applies IMMEDIATELY: removed or redefined rows stop their `cortiq serve` child (memory freed on the spot), new or changed rows are spawned and health-checked — no gateway restart needed. - A managed row that shares its id with a same-id STATIC pool entry pointing at a local server (the shape Import→register creates) now supersedes it: the static entry is dropped automatically instead of failing the save with "duplicate managed model id". - validate() now tells the two duplicate cases apart with actionable messages (two managed rows vs managed-vs-pool collision).
This commit is contained in:
+11
-1
@@ -682,9 +682,19 @@ impl Config {
|
||||
self.models.iter().map(|m| m.id.as_str()).collect();
|
||||
// managed local servers are known ids too; also enforce unique ports/ids
|
||||
let mut ports = std::collections::HashSet::new();
|
||||
let mut managed_seen = std::collections::HashSet::new();
|
||||
for s in &servers {
|
||||
if !managed_seen.insert(s.id.as_str()) {
|
||||
anyhow::bail!(
|
||||
"config: two managed local models share the id '{}' — give one of the rows a different id",
|
||||
s.id
|
||||
);
|
||||
}
|
||||
if !ids.insert(s.id.as_str()) {
|
||||
anyhow::bail!("config: duplicate managed model id '{}'", s.id);
|
||||
anyhow::bail!(
|
||||
"config: managed local model '{}' has the same id as a pool model — rename the row or delete the pool entry",
|
||||
s.id
|
||||
);
|
||||
}
|
||||
if !ports.insert(s.port) {
|
||||
anyhow::bail!("config: two managed models share port {}", s.port);
|
||||
|
||||
Reference in New Issue
Block a user