Skip to content

fix(pg-cloudflare): safely end closed sockets - #3735

Merged
brianc merged 1 commit into
brianc:masterfrom
pratik-desgn:fix-cloudflare-socket-end-after-close
Aug 12, 2026
Merged

fix(pg-cloudflare): safely end closed sockets#3735
brianc merged 1 commit into
brianc:masterfrom
pratik-desgn:fix-cloudflare-socket-end-after-close

Conversation

@pratik-desgn

Copy link
Copy Markdown
Contributor

Closes #3689.

CloudflareSocket._addClosedHandler() clears _cfSocket when the underlying socket closes. A later pool cleanup calls end()/destroy(), which currently dereferences the cleared socket and throws.

Use optional chaining so closing an already-closed socket is a no-op. The regression test drives the close handler, verifies the internal socket has been cleared, and confirms end() no longer throws.

Validation:

  • node --test --conditions=workerd packages/pg-esm-test/pg-cloudflare.test.js
  • yarn eslint packages/pg-cloudflare/src/index.ts packages/pg-esm-test/pg-cloudflare.test.js
  • yarn build
  • git diff --check

@brianc brianc left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

nice, ty!

@brianc
brianc merged commit cd5ec59 into brianc:master Aug 12, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pg-cloudflare: CloudflareSocket.end() throws null.close() when releasing a client whose socket already closed

2 participants