Skip to content

Make KiNET output socket non-blocking - #2070

Open
iibaranov-IG wants to merge 1 commit into
OpenLightingProject:masterfrom
iibaranov-IG:fix/1850-kinet-nonblocking
Open

iibaranov-IG wants to merge 1 commit into
OpenLightingProject:masterfrom
iibaranov-IG:fix/1850-kinet-nonblocking

Conversation

@iibaranov-IG

Copy link
Copy Markdown

When a KiNET target disappears, a blocking UDP send can hold OLA's shared event loop while the kernel resolves the unreachable neighbour. That delays unrelated healthy universes and explains the stutter followed by catch-up bursts reported in #1850.

Set the KiNET socket descriptor non-blocking during initialization. If the socket cannot be configured, startup fails explicitly; if a later send cannot proceed, the existing send-failure path drops that frame instead of blocking other outputs.

Validation:

  • built the current repository in a clean Debian container with only the KiNET plugin enabled
  • plugins/kinet/KiNetTester: all 3 tests pass, including a new check of the actual descriptor's O_NONBLOCK flag
  • cpplint passes for both changed files
  • BCL evidence: https://github.com/iibaranov-IG/broadcast-control-lab/pull/15
  • physical multi-device cadence testing remains requested in the BCL hardware kit

Fixes #1850

An unreachable destination can otherwise block the shared OLA event loop while the network stack resolves it, delaying every healthy universe. Configure the KiNET descriptor before binding and verify the real socket flag in the node test.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Possible lag from missing IP devices or TCP timeouts

1 participant