Skip to content

1.0.0-beta10: HTTP responses hang or return empty body with elide serve (regression vs beta9 preinit crash) #1702

@akapug

Description

@akapug

Summary

  • On 1.0.0-beta10, elide serve accepts connections and routes requests, but HTTP responses either hang indefinitely (no body transmitted) or return 200 OK with empty body. On 1.0.0-beta9, elide serve crashed on startup due to a Graal preinit error; that is fixed in beta10 but appears to have regressed the HTTP pipeline.

Environment

  • Elide CLI: 1.0.0-beta10 (linux-amd64) installed via: curl -sSL --tlsv1.2 elide.sh | bash -s - --install-rev=1.0.0-beta10
  • Host OS: Linux x86_64 (ThinkPad T14 Gen1, 32GB RAM)
  • Java/Graal: Oracle GraalVM v25.0.0 (reported by elide info --verbose)
  • Transport: EpollTransport (auto-selected; logs show "Using transport: EpollTransport")
  • curl: 8.14.1

Expected

  • "elide serve ./hello.mjs" should return the body (e.g., "Hello!") promptly.

Actual

  • Server starts and logs show requests being handled (pipeline stage 0 matched), but client hangs waiting for body. In some runs, headers are sent (HTTP/1.1 200 OK) but body is empty or truncated. Previously saw Netty ByteBuf leak warnings when experimenting.

Repro (minimal)

  1. hello.mjs
export default {
  async fetch(_req) {
    return new Response("Hello!", { status: 200 });
  }
};
  1. hello_json.mjs
export default {
  async fetch(_req) {
    return Response.json({ ok: true, t: Date.now() });
  }
};
  1. Run
elide --version  # -> 1.0.0-beta10
elide --debug serve ./hello.mjs   # or ./hello_json.mjs
curl -iS http://127.0.0.1:8080/

Observed logs (excerpt)

Server listening at 0.0.0.0/0.0.0.0:8080
Handling HTTP request: ... GET /
Handling pipeline stage: 0
Handler condition matches request at stage 0
Resolving context for current thread
No cached context found for current thread, acquiring new context
... (VFS checks)
# No subsequent log indicating response write/flush; curl hangs waiting for body

Notes

  • beta9: startup failed with Graal preinit NPE in PolyglotContextImpl.loadPreinitializedContext (fixed by beta10).
  • beta10: startup succeeds; responses now hang/empty. Appears to be in the HTTP response pipeline.
  • I also tried:
    • Explicit Content-Length and Content-Type headers (server sometimes failed to start or behavior unchanged)
    • Response.json()
    • Different handlers (string, JSON); all hang
    • --debug, which shows request handling but not response emission
    • The transport selected was EpollTransport; if there is a switch to force NIO, happy to try.

Questions / Request

  • Is this a known issue on beta10? Any flags/workarounds to force a different Netty transport or disable certain pipeline features?
  • Happy to run a patched snapshot or provide more logs. I can also try a specific JAVA_TOOL_OPTIONS/System properties if advised.

Thanks!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions