zeroclaw-labs/zeroclaw · error
Qdrant set payload failed during agent rename ({status}): {t
Error message
Qdrant set payload failed during agent rename ({status}): {text} What it means
QdrantMemory::rename_agent scrolls points whose agent_id payload equals the old alias and rewrites them to the new alias via set-payload. This error means that set-payload call returned non-2xx partway through the rename.
Source
Thrown at crates/zeroclaw-memory/src/qdrant.rs:867
}
let body = serde_json::json!({
"payload": { "agent_id": to },
"filter": Self::must_filter(&[("agent_id", from)]),
});
let resp = self
.request(
reqwest::Method::POST,
&format!("/collections/{}/points/payload", self.collection),
)
.query(&[("wait", "true")])
.json(&body)
.send()
.await
.context("failed to set payload during Qdrant agent rename")?;
if !resp.status().is_success() {
let status = resp.status();
let text = resp.text().await.unwrap_or_default();
anyhow::bail!("Qdrant set payload failed during agent rename ({status}): {text}");
}
Ok(matches)
}
async fn count_agent(&self, agent_alias: &str) -> Result<usize> {
// Qdrant keys memory points by the alias in the `agent_id` payload field,
// so `rename_agent` re-points exactly the points `list_for_agents` returns;
// residue is that match count.
Ok(self
.list_for_agents(&[agent_alias], None, None)
.await?
.len())
}
async fn count(&self) -> Result<usize> {
self.ensure_initialized().await?;
let resp = selfView on GitHub (pinned to 88bb9c8533)
Solutions
- Retry rename_agent — it re-scrolls and rewrites whatever still matches (idempotent)
- 404: recreate the collection and restart so init re-runs
- Avoid concurrent forget/purge on the same agent during a rename
- 5xx: wait for readyz then retry
Defensive patterns
Strategy: retry
Validate before calling
// Skip renames that cannot matter
if memory.count_agent(from).await? == 0 { return Ok(0); } // nothing to re-point Type guard
fn is_rename_set_payload_error(e: &anyhow::Error) -> bool {
e.to_string().starts_with("Qdrant set payload failed during agent rename")
} Try / catch
match memory.rename_agent(from, to).await {
Err(e) if is_rename_set_payload_error(&e) => { sleep(backoff).await; memory.rename_agent(from, to).await } // idempotent re-scroll+rewrite
other => other,
} Prevention
- Retry renames — they recompute matches each attempt
- Don't purge an agent's memories concurrently with its rename
- Health-check Qdrant before admin operations
When it happens
Trigger: 404 collection missing; 400 from an empty/invalid match list; concurrent deletes removing points between scroll and set-payload; 5xx.
Common situations: Renaming an agent while its memories are being purged; renaming against a dropped collection; Qdrant briefly unavailable mid-rename.
Related errors
- Qdrant collection creation failed ({status}): {text}
- Qdrant set payload failed during migration ({status}): {text
- Qdrant delete failed ({status}): {text}
- Qdrant search failed ({status}): {text}
- Qdrant collection info failed ({status}): {text}
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/12ffcecf8b1b38ed.
Report an issue: GitHub.