Repository navigation
Conversation
Member
|
@derekste Thank you for keeping this to a one line change. Please try to be similarly concise with the PR description.
This is the desired behavior when a server is being subjected to a DoS attack. Perhaps not by intent, but in effect. I am open to changing the magic Looking on my Debian 13 host. imo. 4096 is too large. And Even 128 seems too large on RTEMS. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When 16 independent PVA client contexts connect simultaneously, the server's four-slot TCP accept queue can overflow and delay some clients beyond the burst fixture's five-second initial-monitor deadline. Use
SOMAXCONNwhen creating the listener so the platform can provide its supported queue depth.@shreya-fermi reproduced this on Linux arm64 and proposed the change in fermi-ad/redis-pvxs-ioc#122. A separate Linux amd64 comparison on adlinux3 confirms the result:
Send-QListenOverflowsSOMAXCONNThe variants were interleaved for 20 cycles each, with fresh private Redis, IOC, and client containers on an internal bridge with no host ports. Both runtime images use the same IOC binary and dependencies; the rebuilt PVXS library differs by this listener constant. IOC UID 10001, read-only root, 256 MiB/128 PID limit; client 512 MiB/128 PID limit. No OOM kills occurred.
The unchanged burst client at
0eb4e76uses one UInt32 scalar PV, 16 independent contexts, pipelined monitors with queue size 16, an explicit UDP address, and automatic address discovery disabled. AfterhurryUp(), it publishes a zero sample and waits five seconds for all initial monitors, then sends one validation sample. This fixture deadline is not a product startup guarantee.A/B source: IOC
47626c7d8a31, PVXS8e00eaecdee5. The same four-slot constant remains on current upstreama9f8b7b, which this PR targets. Runtime image IDs: backlog 4sha256:94b8146263f38c75e9527f619d6ed5ae0ef3edd1165d88bb3c6e2fc64dfaa167;SOMAXCONNsha256:ee66ac7f001c204d536c624c38099ed8baf63933fa0a2c3116c3e28c60b56d69.Validation: both A/B builders pass all 19 IOC CTest cases. The patch on current upstream passes all 25 standalone PVXS core suites (2490 assertions) on Linux amd64. On macOS arm64, 24 core suites pass; UDP forwarding fails identically with the original and patched listener. EPICS database IOC suites were outside these core runs. The platform constant compiles on both Linux and macOS.
The source-host evidence archive is retained at
/mnt/newdrive/derekste/pvxs-backlog-review-20260930-evidence.tar.gz, SHA25657faf3d039721dc6bc658bb3da75a6871e3e3f9792c9baf70c9cbdf8d170f3fb. The downstream issue stays open through upstream review and final candidate burst/reconnect qualification.Upstream GitHub CI: at this update, all five workflow runs are marked
action_requiredwith no jobs created. Native validation is complete; hosted CI needs action by the upstream maintainers.