tinyhumansai/openhuman · error
[composio] polling connections failed:
Error message
[composio] polling connections failed:
What it means
Failure of the periodic Composio connections poll: listConnections({timeoutMs}) inside window.setInterval rejected (network/timeout/backend error). The generation guard means stale responses are already dropped; the catch only warns, connections keep their last-known value and the next interval tick retries automatically.
Source
Thrown at app/src/lib/composio/hooks.ts:242
}, [fetchEnabled, resolveFetchEnabled]);
// Initial fetch + polling.
useEffect(() => {
void refresh();
if (pollIntervalMs <= 0 || fetchEnabled !== true) return;
const id = window.setInterval(() => {
const generation = configGenerationRef.current;
void listConnections({ timeoutMs: COMPOSIO_FETCH_TIMEOUT_MS })
.then(resp => {
if (!mountedRef.current || generation !== configGenerationRef.current) return;
const freshConnections = resp.connections ?? [];
setConnections(freshConnections);
// Keep the durable cache current with each poll so a restart paints
// the freshest activation state (merge preserves toolkit/catalog).
writeConnectionCache({ connections: freshConnections });
})
.catch(err => {
console.warn(
'[composio] polling connections failed:',
err instanceof Error ? err.message : String(err)
);
});
}, pollIntervalMs);
return () => window.clearInterval(id);
}, [refresh, pollIntervalMs, fetchEnabled]);
// [composio-cache] Listen for a window-level "config changed" event
// emitted by ComposioPanel when the user flips backend ↔ direct or
// stores/clears the BYO API key. Without this, the integrations panel
// keeps showing the previous tenant's connections for up to one poll
// interval (5s) — visible enough to look like a bug (#1710). On the
// event we trigger a full refresh which re-fetches toolkits +
// connections against the new client. We also rely on the Rust-side
// ComposioConfigChanged bus event to invalidate the core-side cache;
// the window event is purely an in-renderer signal.
useEffect(() => {View on GitHub (pinned to 7491200858)
Solutions
- Rely on the next poll tick — retries are built into the interval
- Inspect the underlying error kind: timeout vs auth determines whether polling can ever succeed
- Back off or stop polling after consecutive failures to avoid log spam
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at app/src/lib/composio/hooks.ts:242 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/5c06f3d6fd8ff0e9.
Report an issue: GitHub.