paperclipai/paperclip · error

Job "${job.jobKey}" already has a running execution — cannot

Error message

Job "${job.jobKey}" already has a running execution — cannot trigger while in progress

What it means

Overlap guard (database, defensive) in triggerJob: a query for pluginJobRuns rows with status running found at least one. Covers multi-instance deployments where another process's in-memory set cannot be seen; the other instance's running execution is at fault.

Source

Thrown at server/src/services/plugin-job-scheduler.ts:473

    if (activeJobs.has(jobId)) {
      throw new Error(
        `Job "${job.jobKey}" is already running — cannot trigger while in progress`,
      );
    }

    // Also check DB for running runs (defensive — covers multi-instance)
    const existingRuns = await db
      .select()
      .from(pluginJobRuns)
      .where(
        and(
          eq(pluginJobRuns.jobId, jobId),
          eq(pluginJobRuns.status, "running"),
        ),
      );

    if (existingRuns.length > 0) {
      throw new Error(
        `Job "${job.jobKey}" already has a running execution — cannot trigger while in progress`,
      );
    }

    // Check worker availability
    if (!workerManager.isRunning(job.pluginId)) {
      throw new Error(
        `Worker for plugin "${job.pluginId}" is not running — cannot trigger job`,
      );
    }

    // Create the run and dispatch (non-blocking)
    const run = await jobStore.createRun({
      jobId,
      pluginId: job.pluginId,
      trigger,
    });

View on GitHub (pinned to 120ae5428f)

Solutions

  1. A previous execution is still running. Wait for completion or investigate a stuck execution before re-triggering.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/plugin-job-scheduler.ts:473 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18). Data as JSON: /api/errors/b2b605a9451025c1. Report an issue: GitHub.