windmill-labs/windmill · error

dedupeLockfiles is on but this checkout still holds one lock

Error message

dedupeLockfiles is on but this checkout still holds one lockfile per script. Run 'wmill generate-metadata' (or pull) to convert it — until then every script reads as changed.

What it means

Error "dedupeLockfiles is on but this checkout still holds one lockfile per script. Run 'wmill generate-metadata' (or pull) to convert it — until then every script reads as changed." thrown in windmill-labs/windmill.

Source

Thrown at cli/src/commands/sync/sync.ts:4974

    }
    if (referrers.length === 0) continue;
    log.info(
      colors.gray(
        `${change.path} changed: re-pushing the ${referrers.length} script(s) sharing it`,
      ),
    );
    for (const metaPath of referrers) {
      if (changedPaths.has(metaPath)) continue;
      changes.push({
        name: "edited",
        path: metaPath,
        before: localMap[metaPath],
        after: localMap[metaPath],
      });
    }
  }
  if (unconvertedTree) {
    log.warn(
      colors.yellow(
        `dedupeLockfiles is on but this checkout still holds one lockfile per script. Run 'wmill generate-metadata' (or pull) to convert it — until then every script reads as changed.`,
      ),
    );
  }

  // After the shared-lock pass, which reads a shared lockfile's deletion as the
  // signal that this checkout is not deduplicated — an advisory about the local
  // tree that holds whether or not remote items are being kept.
  if (opts.keepDeleted) {
    dropDeletions(changes, "remote");
  }

  const autoRegenerate = !!(opts as any).autoMetadata;
  const staleScripts: string[] = [];
  const staleFlows: string[] = [];
  const staleApps: string[] = [];

View on GitHub (pinned to e474e8803c)

Solutions

  1. Run 'wmill generate-metadata' to convert the checkout to shared/deduped lockfiles
  2. Or run 'wmill pull' to re-sync metadata from the remote
  3. Keep dedupeLockfiles off in wmill.yaml until the checkout is converted
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at cli/src/commands/sync/sync.ts:4974 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/19a4b9392134ef5d. Report an issue: GitHub.