Skip to content

[BUG] 4.27 multi-instance: plugin-runtime-deps hash mismatch causes ENOENT on bundled channel dist files #74963

@visionzhang-prog

Description

@visionzhang-prog

Issue 4.27 multi-instance plugin-runtime-deps hash mismatch

** https://github.com/openclaw/openclaw/issues/new


Title:

[BUG] 4.27 multi-instance: plugin-runtime-deps hash mismatch causes ENOENT on bundled channel dist files

Labels: bug


Body:

## 📌 Description

After upgrading to OpenClaw 4.27, running multiple Gateway instances (5x via PM2 on Windows) causes `plugin-runtime-deps` directory hash mismatch. Each instance generates a different hash (e.g., `5f4e2e59ed9a` vs `456555aaef5c`), but some instances fail to find the correct dist files.

## 🐛 Symptoms

[channels] failed to load bundled channel discord: ENOENT: no such file or directory, open 'C:\Users\Administrator.openclaw\plugin-runtime-deps\openclaw-2026.4.27-456555aaef5c\dist\channel-reply-pipeline-DIVeGRyD.js'
[channels] failed to load bundled channel feishu: ENOENT: ... openclaw-2026.4.27-456555aaef5c\dist\channel-options-UH47ik5d.js'
[channels] failed to load bundled channel googlechat: ENOENT: ... openclaw-2026.4.27-456555aaef5c\dist\browser-lifecycle-cleanup-C2Oo2ffe.js'
[channels] failed to load bundled channel imessage: ENOENT: ... openclaw-2026.4.27-456555aaef5c\dist\channel-BNoltDfW.js'
[channels] failed to load bundled channel line: ENOENT: ... openclaw-2026.4.27-456555aaef5c\dist\channel-runtime-contexts-BUb7qx3p.js'
[channels] failed to load bundled channel irc: ENOENT: ... openclaw-2026.4.27-456555aaef5c\dist\cache-controls-DyMccij0.js'
... (all channels affected on affected instances)


## 🖥️ Environment

- OS: Windows Server (PM2 multi-instance: openclaw-gw1 ~ openclaw-gw5)
- OpenClaw: 2026.4.27
- Node: v22.x
- PM2: running 5 gateway instances

## 📊 Additional Metrics

eventLoopDelayMaxMs=11827.9
eventLoopUtilization=0.637
cpuCoreRatio=0.676
active=0 waiting=0 queued=0


## 🔍 Suspected Root Cause

The `plugin-runtime-deps` instance hash is derived from some instance-specific identifier that differs across PM2 workers. When one instance installs/updates the runtime deps into a hash-based directory, other instances may either:

1. Create a different hash directory and fail to find shared dist files, OR
2. Race condition during the same hash directory population causes partial file writes

## 📝 Expected Behavior

All gateway instances on the same host should share a single `plugin-runtime-deps` directory per version, or each instance should have its own isolated deps directory that actually works.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions