WIP: test: add independent-node presence workload #49

Draft
KofTwentyTwo wants to merge 6 commits from test/presence-capacity-1302 into feature/field-values-1196
pull from: test/presence-capacity-1302
KofTwentyTwo commented 2026-10-26 15:34:07 +00:00 (Migrated from github.com)

Adds bounded presence qualification across independent JVM HTTP servers and shared disposable Redis. Configured mock identities span multiple tenants with identical record IDs. Each round rotates existing lease renewals across nodes and verifies exact tenant membership, duplicate-tab deduplication and two editors on every surviving node.

Test tooling samples existing Redis pool metrics and JVM CPU/heap, captures Redis slow-command/latency counters, and supports Linux containers on an owned network plus abrupt node loss. All exposed ports are loopback-only; owned processes/containers/network are cleaned up. No production runtime changes.

Evidence retained in docs/performance/results:

  • Linux three-node/two-tenant/24-user/96-tab workload passed1000rounds:96000renewals+12000snapshots in250.811seconds, cleanupPASS.
  • Linux node-loss run passed100rounds:9600renewals+996snapshots. First JVM killed at round50 (exit137); all existing leases continued on two surviving nodes without replacement/retry, cleanupPASS.
  • Windows-host JVM sustained runs intermittently return503. Temporary diagnostics identified Redis socket-read timeout; Redis timing capture showed no>=1ms commands. Four failed runs and a separate successful run remain distinct; cause is not resolved by the Linux pass. No timeout increase or retry workaround.
  • Java fixture compilation, default demo3tests, Python compile and diff checks passed. Hosted CI for earlier5b7c947 passed; new signed ea06d6f requires its own CI.

Draft toward QRun-IO/qqq#1302/#1291. Remaining: unresolved Windows timeout, browser/SSE propagation, saturation/churn/missed-message matrix, total resident/Redis-server resources and deployment-specific thresholds. HTTP node-loss proof is not ingress/browser reconnect or database durability. Based on published collaborationecff347; separate attachment/MyWork/recovery PRs are not combined. No merge/deployment.

Adds bounded presence qualification across independent JVM HTTP servers and shared disposable Redis. Configured mock identities span multiple tenants with identical record IDs. Each round rotates existing lease renewals across nodes and verifies exact tenant membership, duplicate-tab deduplication and two editors on every surviving node. Test tooling samples existing Redis pool metrics and JVM CPU/heap, captures Redis slow-command/latency counters, and supports Linux containers on an owned network plus abrupt node loss. All exposed ports are loopback-only; owned processes/containers/network are cleaned up. No production runtime changes. Evidence retained in docs/performance/results: - Linux three-node/two-tenant/24-user/96-tab workload passed1000rounds:96000renewals+12000snapshots in250.811seconds, cleanupPASS. - Linux node-loss run passed100rounds:9600renewals+996snapshots. First JVM killed at round50 (exit137); all existing leases continued on two surviving nodes without replacement/retry, cleanupPASS. - Windows-host JVM sustained runs intermittently return503. Temporary diagnostics identified Redis socket-read timeout; Redis timing capture showed no>=1ms commands. Four failed runs and a separate successful run remain distinct; cause is not resolved by the Linux pass. No timeout increase or retry workaround. - Java fixture compilation, default demo3tests, Python compile and diff checks passed. Hosted CI for earlier5b7c947 passed; new signed ea06d6f requires its own CI. Draft toward QRun-IO/qqq#1302/#1291. Remaining: unresolved Windows timeout, browser/SSE propagation, saturation/churn/missed-message matrix, total resident/Redis-server resources and deployment-specific thresholds. HTTP node-loss proof is not ingress/browser reconnect or database durability. Based on published collaborationecff347; separate attachment/MyWork/recovery PRs are not combined. No merge/deployment.
You are not authorized to merge this pull request.
This pull request can be merged automatically.
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin test/presence-capacity-1302:test/presence-capacity-1302
git checkout test/presence-capacity-1302
Sign in to join this conversation.