[PR #4137] [management] sync calls to UpdateAccountPeers from BufferUpdateAccountPeers #4110

Closed
opened 2025-11-20 08:07:44 -05:00 by saavagebueno · 0 comments
Owner

Original Pull Request: https://github.com/netbirdio/netbird/pull/4137

State: closed
Merged: Yes


Describe your changes

This change addresses an issue where BufferUpdateAccountPeers could trigger numerous concurrent executions of the expensive UpdateAccountPeers operation.

The new implementation debounces these calls, ensuring that a burst of updates results in a single, synchronized execution. To guarantee that no updates are missed from goroutines that exit early on TryLock, a timer (AfterFunc) schedules a final UpdateAccountPeers call after the last trigger, capturing the latest state.

Stack

Checklist

  • Is it a bug fix
  • Is a typo/documentation fix
  • Is a feature enhancement
  • It is a refactor
  • Created tests that fail without the change (if possible)
  • Extended the README / documentation, if necessary

By submitting this pull request, you confirm that you have read and agree to the terms of the Contributor License Agreement.

**Original Pull Request:** https://github.com/netbirdio/netbird/pull/4137 **State:** closed **Merged:** Yes --- ## Describe your changes This change addresses an issue where `BufferUpdateAccountPeers` could trigger numerous concurrent executions of the expensive `UpdateAccountPeers` operation. The new implementation debounces these calls, ensuring that a burst of updates results in a single, synchronized execution. To guarantee that no updates are missed from goroutines that exit early on `TryLock`, a timer (`AfterFunc`) schedules a final `UpdateAccountPeers` call after the last trigger, capturing the latest state. ## Issue ticket number and link ## Stack <!-- branch-stack --> ### Checklist - [x] Is it a bug fix - [ ] Is a typo/documentation fix - [ ] Is a feature enhancement - [ ] It is a refactor - [ ] Created tests that fail without the change (if possible) - [ ] Extended the README / documentation, if necessary > By submitting this pull request, you confirm that you have read and agree to the terms of the [Contributor License Agreement](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md).
saavagebueno added the pull-request label 2025-11-20 08:07:44 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/netbird#4110