• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In
Warning: This build has drifted.
The coverage report for this pull request build may be inaccurate because its base commit is no longer the HEAD of its target branch.
This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

    • Learn more: For more information on this, see Tracking coverage changes for pull request builds.
    • Fix now: For a quick fix, rebase this PR at GitHub. Your next report should be accurate.
    • Prevent going forward: To avoid this issue with future PRs, see these Recommended CI Configurations.
New Repo Setting:
INCLUDE COVERAGE % WITH WARNINGS ABOUT DRIFTED BUILDS?

Enabling this setting will include a (potentially inaccurate) coverage % with warning messages in status updates for drifted builds.

Adjust setting

ovn-kubernetes / libovsdb / 25911161236
50%
main: 48%

Build:
Build:
LAST BUILD BRANCH: conmgr
DEFAULT BRANCH: main
Ran 15 May 2026 09:44AM UTC
Jobs 1
Files 75
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

14 May 2026 08:22PM UTC coverage: 49.512% (+1.4%) from 48.092%
25911161236

Pull #472

github

dave-tucker
client: fix lifecycle event drops and remove grace-timer reconnect suppression

Two correctness issues identified in code review:

1. EventDisconnected/Reconnected/SchemaData competed with EventInboundRPC on
   a single 64-slot non-blocking channel. Under an inbound-update burst,
   lifecycle events could be silently dropped, leaving the client with stale
   state and unrepaired monitors.

   Fix: introduce a dedicated lifecycleCh (cap 8, blocking send) for lifecycle
   events. EventInboundRPC stays on eventCh (cap 64, non-blocking) where
   occasional drops under load are acceptable. runEventLoop uses a priority
   double-select that drains lifecycleCh before blocking on eventCh.

2. After Connect(), setReconnectTime() armed a 3-second suppression window.
   When the OVS container restarted within that window, withinReconnectGrace()
   swallowed the disconnect signal from rpc2, leaving the client in Connected
   state with a dead TCP socket. TestWithReconnect was permanently skipped
   because of this.

   Fix: use rpcClient.DisconnectNotify() directly as the disconnect signal in
   the run-loop select. rpc2 closes this channel when that specific client
   closes; each new connection produces a new channel, so signals from a
   previous connection are naturally abandoned — no grace timer needed.
   Remove setReconnectTime/withinReconnectGrace/startDisconnectWatcher and the
   drain-sleep-drain loops in doCmdConnect and runReconnectLoop.

Unskip TestWithReconnect now that the underlying bug is fixed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Pull Request #472: client: introduce ConnectionManager to fix reconnect/disconnect panics

807 of 967 new or added lines in 5 files covered. (83.45%)

16 existing lines in 1 file now uncovered.

6547 of 13223 relevant lines covered (49.51%)

134.12 hits per line

Uncovered Changes

Lines Coverage ∆ File
105
81.55
client/connection.go
55
77.62
1.13% client/client.go

Coverage Regressions

Lines Coverage ∆ File
16
77.62
1.13% client/client.go
Jobs
ID Job ID Ran Files Coverage
1 25911161236.1 15 May 2026 09:44AM UTC 75
49.51
GitHub Action Run
Source Files on build 25911161236
  • Tree
  • List 75
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #472
  • PR Base - main (#25801728188)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc