spacedriveapp/spacedrive · warning
RPC ${response.status} ${response.statusText}${text ? `: ${t
Error message
RPC ${response.status} ${response.statusText}${text ? `: ${text}` : ""} What it means
Returned by FileSyncService::sync_now when the loaded conduit has enabled = false. The service refuses to compute or dispatch operations for disabled conduits before checking the active-sync map or calculating operations. Conduits are created with enabled: true, so this state comes from an explicit disable.
Source
Thrown at packages/ts-client/src/transport.ts:258
// subscribers filter client-side.
private sharedSource: EventSource | null = null;
private sharedCallbacks = new Set<(event: any) => void>();
constructor(baseUrl: string = "") {
// Strip trailing slash so `${baseUrl}/rpc` is well-formed.
this.baseUrl = baseUrl.replace(/\/$/, "");
}
async sendRequest(request: any): Promise<any> {
const response = await fetch(`${this.baseUrl}/rpc`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(request),
});
if (!response.ok) {
const text = await response.text().catch(() => "");
throw new Error(
`RPC ${response.status} ${response.statusText}${text ? `: ${text}` : ""}`,
);
}
return await response.json();
}
async subscribe(
callback: (event: any) => void,
_options?: SubscriptionOptions,
): Promise<() => void> {
this.sharedCallbacks.add(callback);
this.ensureSharedSource();
return () => {
this.sharedCallbacks.delete(callback);
if (this.sharedCallbacks.size === 0 && this.sharedSource) {
this.sharedSource.close();View on GitHub (pinned to 6dfeccf211)
Solutions
- Check the flag: SELECT id, enabled FROM sync_conduit WHERE id = <id>.
- Re-enable the conduit (set enabled = true via the toggle API or UPDATE), then call sync_now again.
- If it should stay disabled, remove it from the scheduler so sync_now is not invoked for it.
Example fix
-- before SELECT enabled FROM sync_conduit WHERE id = 7; -- false -- after UPDATE sync_conduit SET enabled = true WHERE id = 7;
Defensive patterns
Strategy: validation
Validate before calling
// Check the enabled flag before requesting a sync.
async fn can_sync_now(svc: &ConduitService, id: i32) -> Result<bool> {
Ok(svc.get_conduit(id).await?.enabled)
} Try / catch
match svc.sync_now(id).await {
Ok(h) => Ok(h),
Err(e) if e.to_string() == "Conduit is disabled" => {
// user paused it: silently skip in schedulers, prompt in manual UI
Ok(skip_sync())
}
Err(e) => Err(e),
} Prevention
- Schedulers should filter by list_enabled() instead of list_all() so disabled conduits are never triggered.
- Reflect the enabled flag in UI controls (disable 'Sync now' when paused).
- Log which conduit id was refused so paused-state surprises are traceable.
When it happens
Trigger: Calling sync_now(conduit_id) on a conduit row where enabled was set to false (via whatever disable/toggle API or direct DB update), or on a freshly restored DB where the flag was persisted as false.
Common situations: User paused the sync pair in the UI; automation toggling conduits off during maintenance; a client retrying a scheduled sync against a conduit disabled moments earlier.
Related errors
- Library with ID '${libraryId}' not found
- This operation requires an active library. Use switchToLibra
- ${isQuery ? "Query" : "Action"} failed: ${JSON.stringify(err
- Unexpected response: ${JSON.stringify(response)}
- No library selected. Use client.switchToLibrary() first.
AI-assisted analysis of spacedriveapp/spacedrive@6dfeccf211 (2026-08-16).
Data as JSON: /api/errors/abb8a63ec2105f25.
Report an issue: GitHub.