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

  1. Check the flag: SELECT id, enabled FROM sync_conduit WHERE id = <id>.
  2. Re-enable the conduit (set enabled = true via the toggle API or UPDATE), then call sync_now again.
  3. 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

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


AI-assisted analysis of spacedriveapp/spacedrive@6dfeccf211 (2026-08-16). Data as JSON: /api/errors/abb8a63ec2105f25. Report an issue: GitHub.