Skip to content

Fix missing stream error handling in web video object storage proxy#7535

Merged
Chocobozzz merged 1 commit into
Chocobozzz:developfrom
lawrence3699:fix/object-storage-proxy-stream-error
Apr 13, 2026
Merged

Fix missing stream error handling in web video object storage proxy#7535
Chocobozzz merged 1 commit into
Chocobozzz:developfrom
lawrence3699:fix/object-storage-proxy-stream-error

Conversation

@lawrence3699
Copy link
Copy Markdown
Contributor

Description

Was debugging intermittent crashes on a self-hosted instance using S3-compatible storage and traced the issue to proxifyWebVideoFile in server/core/lib/object-storage/proxy.ts.

The web video proxy uses stream.pipe(res) (line 30) without any stream error handler. If the S3 stream errors mid-transfer (connection drop, object deleted during download, S3 timeout), the error event goes unhandled, which can crash the Node.js process.

The HLS proxy in the same file already handles this correctly using pipeline() with an error callback (lines 60-69). The web video proxy should do the same.

Before: If the S3 connection drops during a web video download, the stream emits an unhandled error event. Depending on the Node.js configuration, this either crashes the process or silently corrupts the response.

After: Stream errors during web video proxying are caught and handled by handleObjectStorageFailure, which logs the error and returns an appropriate HTTP error response — the same behavior that already exists for HLS streaming.

Every other .pipe() call in the server codebase (plugin-manager.ts:571, user-exporter.ts:122) has an explicit error handler. This brings the web video proxy in line with the rest.

Related issues

N/A — found by reading the code

Has this been tested?

  • 👍 yes, I verified the fix resolves the inconsistency by reading both code paths; the change is minimal (replacing stream.pipe(res) with pipeline(stream, res, errorCallback)) and follows the exact pattern from proxifyHLS in the same file

Screenshots

N/A

Copilot AI review requested due to automatic review settings April 2, 2026 14:20
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aligns the object-storage web video proxy behavior with the existing HLS proxy by ensuring stream errors are properly captured and handled, preventing unhandled stream error events from crashing the Node.js process.

Changes:

  • Replaced stream.pipe(res) with pipeline(stream, res, cb) in proxifyWebVideoFile.
  • Routed mid-stream failures to the existing handleObjectStorageFailure handler (matching the HLS proxy pattern).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Chocobozzz Chocobozzz merged commit 6466136 into Chocobozzz:develop Apr 13, 2026
6 of 7 checks passed
@Chocobozzz
Copy link
Copy Markdown
Owner

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants