-
Notifications
You must be signed in to change notification settings - Fork 31
Open
Description
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)
- hello.mjs
export default {
async fetch(_req) {
return new Response("Hello!", { status: 200 });
}
};- hello_json.mjs
export default {
async fetch(_req) {
return Response.json({ ok: true, t: Date.now() });
}
};- 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!
sgammon