Use the Redis QBit public API with explicit namespace and lifecycle ownership. Preserve optional Redis absence and legacy providers. Local verification: 67 unit and 29 integration tests; launcher lifecycle and real HTTP outage/logout retry acceptance passed. Coordinated prerequisite publication and cold-host checks remain pending. Co-Authored-By: Codex <noreply@openai.com>
35 lines
1.9 KiB
Markdown
35 lines
1.9 KiB
Markdown
# Application-scoped session store registration
|
|
|
|
The candidate core registry resolves the QInstance in QContext. Application
|
|
startup must register explicitly, even when no request context exists:
|
|
|
|
```java
|
|
QSessionStoreRegistry.getInstance(qInstance).register(provider);
|
|
```
|
|
|
|
Calls to `getInstance()` within a request use that request's application. Without
|
|
a QInstance, that call accesses a separate standalone registry. An application
|
|
never inherits that standalone provider. Existing hosts that register outside
|
|
QContext must migrate to the explicit overload alongside this core candidate.
|
|
Deploy matching session-store/core versions; this is not a transparent change for
|
|
old context-free startup integrations.
|
|
|
|
Session-store's producer now supplies its target QInstance to both core registration
|
|
and qbit context. Context getters/setters/clear operate on the current application,
|
|
with explicit QInstance overloads for metadata production/background operations.
|
|
Health metadata selects its target application and the health probe uses the
|
|
QInstance in HealthCheckInput (falling back to current context only if omitted).
|
|
|
|
Regression reproduced before the fix: after application A stored a session,
|
|
unconfigured application B loaded that same session through QSessionStoreHelper.
|
|
The test now checks independent same-ID sessions, isolation of clearing, and health
|
|
checks for an explicit target while a different application is on the caller thread.
|
|
|
|
Hosts sharing a Redis server must configure separate application/authentication
|
|
domain namespaces. The `SHARED_REDIS` provider uses those explicit settings and
|
|
the owning Redis QBit's pool. Its runtime releases owned registrations on stop
|
|
and reconstructs them on restart. Local acceptance covers launcher lifecycle,
|
|
HTTP authentication/logout and Redis outage/retry; coordinated published-artifact
|
|
and clean-host verification remain release gates. See the shared Redis setup in
|
|
[README](../README.md).
|