paperclipai/paperclip · error

Job "${job.jobKey}" is already running — cannot trigger whil

Error message

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

What it means

Overlap guard (in-memory) in triggerJob: activeJobs already contains this jobId, meaning this instance is currently executing the job. Prevents concurrent duplicate runs; the in-flight execution is at fault.

Source

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

  async function triggerJob(
    jobId: string,
    trigger: "manual" | "retry" = "manual",
  ): Promise<TriggerJobResult> {
    const job = await jobStore.getJobById(jobId);
    if (!job) {
      throw new Error(`Job not found: ${jobId}`);
    }

    if (job.status !== "active") {
      throw new Error(
        `Job "${job.jobKey}" is not active (status: ${job.status})`,
      );
    }

    // Overlap prevention
    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`,

View on GitHub (pinned to 120ae5428f)

Solutions

  1. Wait for the current execution to finish before triggering again; poll the job's running state or add idempotency on the caller side.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/plugin-job-scheduler.ts:456 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/cdc2e619c820c4fc. Report an issue: GitHub.