paperclipai/paperclip · error

Removing stale embedded PostgreSQL lock file

Error message

Removing stale embedded PostgreSQL lock file

What it means

Startup log message in startServer's embedded PostgreSQL path. Fires when a stale lock/postmaster file remains from a previous unclean shutdown (no live process claims it); the stale file is removed so a fresh embedded postgres can start on the same data directory.

Source

Thrown at server/src/index.ts:553

          databaseDir: dataDir,
          user: "paperclip",
          password: "paperclip",
          port,
          persistent: true,
          initdbFlags: ["--encoding=UTF8", "--locale=C", "--lc-messages=C"],
          onLog: appendEmbeddedPostgresLog,
          onError: appendEmbeddedPostgresLog,
        });
        embeddedPostgres = createEmbeddedPostgres();

        if (!clusterAlreadyInitialized) {
          try {
            await embeddedPostgres.initialise();
          } catch (err) {
            logEmbeddedPostgresFailure("initialise", err);
            throw formatEmbeddedPostgresError(err, {
              fallbackMessage: `Failed to initialize embedded PostgreSQL cluster in ${dataDir} on port ${port}`,
              recentLogs: logBuffer.getRecentLogs(),
            });
          }
        } else {
          logger.info(`Embedded PostgreSQL cluster already exists (${clusterVersionFile}); skipping init`);
        }

        if (existsSync(postmasterPidFile)) {
          logger.warn("Removing stale embedded PostgreSQL lock file");
          rmSync(postmasterPidFile, { force: true });
        }
        try {
          await embeddedPostgres.start();
        } catch (err) {
          logEmbeddedPostgresFailure("start", err);
          throw formatEmbeddedPostgresError(err, {
            fallbackMessage: `Failed to start embedded PostgreSQL on port ${port}`,
            recentLogs: logBuffer.getRecentLogs(),
          });

View on GitHub (pinned to 01ad858492)

Solutions

  1. Informational only; a stale lock file from a dead embedded PostgreSQL process was removed.
  2. If this recurs, ensure previous server processes were shut down cleanly.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at server/src/index.ts:479 when the library encounters an invalid state.

Common situations: Logged at startup when a leftover embedded PostgreSQL lock file is found whose owning process is no longer running.


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18). Data as JSON: /api/errors/49f793a31b6805de. Report an issue: GitHub.