Every AssistantRuntime registered a JVM shutdown hook that held the runtime, and through it the whole QInstance, until the JVM exited. A host test suite that builds an instance per test leaked every instance.
kof22's Website-Backend suite now runs out of heap in CI. I found the leak with a reachability search: after GC, every built instance stayed reachable through ApplicationShutdownHooks -> assistant-shutdown-* -> AssistantRuntime.qInstance, and that was the only path left.
The hook now holds the runtime through a WeakReference; production shutdown is unchanged.
Every `AssistantRuntime` registered a JVM shutdown hook that held the runtime, and through it the whole QInstance, until the JVM exited. A host test suite that builds an instance per test leaked every instance.
kof22's Website-Backend suite now runs out of heap in CI. I found the leak with a reachability search: after GC, every built instance stayed reachable through `ApplicationShutdownHooks -> assistant-shutdown-* -> AssistantRuntime.qInstance`, and that was the only path left.
The hook now holds the runtime through a `WeakReference`; production shutdown is unchanged.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Every
AssistantRuntimeregistered a JVM shutdown hook that held the runtime, and through it the whole QInstance, until the JVM exited. A host test suite that builds an instance per test leaked every instance.kof22's Website-Backend suite now runs out of heap in CI. I found the leak with a reachability search: after GC, every built instance stayed reachable through
ApplicationShutdownHooks -> assistant-shutdown-* -> AssistantRuntime.qInstance, and that was the only path left.The hook now holds the runtime through a
WeakReference; production shutdown is unchanged.🤖 Generated with Claude Code