milvus-io/milvus · error
HTTP ${response.status}
Error message
HTTP ${response.status} What it means
Thrown while fetching a client's configuration: GET /_telemetry/clients/{clientId}/config is an async command-dispatch endpoint; any non-2xx response (this code path does not special-case 401) raises this error with the raw HTTP status. Common statuses are 401 (expired sessionStorage token handled nowhere here), 404 (unknown client), and 500 (server-side dispatch failure).
Source
Thrown at internal/http/webui/telemetry.html:2127
let currentConfigClientId = '';
async function showClientConfig(clientId) {
currentConfigClientId = clientId;
document.getElementById('configModalClientId').textContent = clientId;
document.getElementById('configModalContent').innerHTML = `
<div class="empty-state" style="padding: 20px;">
<p>Fetching configuration from client...</p>
</div>
`;
document.getElementById('configModal').style.display = 'flex';
try {
const response = await fetch(`${API_BASE}/_telemetry/clients/${encodeURIComponent(clientId)}/config`, {
headers: { 'Authorization': authToken }
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();
if (data.status === 'pending') {
// Start polling for the command reply
document.getElementById('configModalContent').innerHTML = `
<div class="empty-state" style="padding: 20px;">
<p>Command sent. Waiting for client response...</p>
<p style="font-size: 12px; color: var(--gray-400); margin-top: 8px;">Command ID: ${escapeHtml(data.command_id)}</p>
</div>
`;
pollForConfigReply(data.command_id, clientId);
} else {
renderConfigResponse(data);
}
} catch (error) {
document.getElementById('configModalContent').innerHTML = `View on GitHub (pinned to b43a76673a)
Solutions
- Check the status number shown in the message: 401 -> log in again; 404 -> refresh the client list and pick a live client; 5xx -> inspect proxy logs.
- Refresh clients and retry the config fetch against a client with a current heartbeat.
- If 401 recurs quickly, verify the milvusAuth sessionStorage token is being sent correctly (devtools Network tab).
Example fix
// before
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
// after
if (response.status === 401) {
logout();
return;
}
if (!response.ok) {
const err = await response.json().catch(() => ({}));
throw new Error(err.error || `HTTP ${response.status}`);
} Defensive patterns
Strategy: try-catch
Try / catch
try {
const response = await fetch(url, { headers: { 'Authorization': authToken } });
if (response.status === 401) { logout(); return; }
if (response.status === 404) { throw new Error('Client not found - it may have disconnected. Refresh the list.'); }
if (!response.ok) throw new Error(`Config request failed: HTTP ${response.status}`);
} catch (e) { renderModalError(e.message); } Prevention
- Add explicit 401/404 handling before the generic !ok branch.
- Refresh the client list and pick clients with a fresh heartbeat.
- Log the command_id returned on success so late failures can be correlated with server logs.
When it happens
Trigger: Clicking 'Config' on a client after the session token expired (401); client disconnected and evicted (404); server error while enqueueing the get_config command.
Common situations: Leaving the WebUI open past token/session lifetime; stale client table; proxy restarting so in-memory clients are empty.
Related errors
- Failed to push config
- Server error
- Failed to delete command
- Failed to request errors
- Empty payload received
AI-assisted analysis of milvus-io/milvus@b43a76673a (2026-08-15).
Data as JSON: /api/errors/37ec285602764bd5.
Report an issue: GitHub.