Skip to content

Transfered (PostMessaged) disk- blob's aren't readable #47334

Closed
@jimmywarting

Description

@jimmywarting

I notice that blobs transfered over workers aren't readable at all.

  • it only applies to blobs coming from fs.openAsBlob
  • in-memory constructed blobs works fine.

mini repro:

import { Worker } from 'worker_threads'
const worker = new Worker('./worker.js')
worker.once('message', blob => {
  // worker.terminate() // Should be fine to do this as well
  blob.text()
})
// worker.js
import { parentPort } from 'node:worker_threads'
import { openAsBlob } from 'node:fs'

const blob = await openAsBlob(import.meta.url.slice(7)) // file:// doesn't work
parentPort.postMessage(blob)

I would assume that if you also closed the worker it would still work just fine to read the blob, even if it came from another thread...

originally posted by @jimmywarting in #45258 (comment)

maybe also worth trying out to write a test that also use MessageChannel?
...haven't tested if MessageChannel works or not.

Metadata

Metadata

Assignees

No one assigned

    Labels

    fsIssues and PRs related to the fs subsystem / file system.workerIssues and PRs related to Worker support.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions