Conversation
Contributor
|
Sounds like a valid fix, and honestly could be a default behavior in many cases. Prior to this, the best resolution was to not use the "simple" configuration for openmhz or broadcastify, and manually set their execution order in the plugins section. Serial execution seemed like it worked most of the time, but as noted above, did lead to some issues when either OpenMhz or Broadcastify had issues with their upload API/ |
Contributor
|
this would be awesome - currently upload using several plugins and would love to get the latency down even further |
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.
Summary
Adds optional parallel execution of plugin
call_end()callbacks to prevent one slow uploader from delaying other upload plugins.Trunk Recorder currently invokes
call_end()plugins serially. In production, slow OpenMHz uploads and HTTP 504 responses were observed blocking later Broadcastify uploads for 15–90+ seconds. Because Broadcastify validates call timing, that head-of-line blocking caused otherwise healthy Broadcastify uploads to be rejected for excessive skew.This change adds:
The option defaults to
falseso existing installations retain the current serial behavior.When enabled:
call_end()plugins are dispatched concurrently;plugin_retry_list;Production validation
Tested on a live P25 Phase II system using the OpenMHz and Broadcastify uploaders.
Before this change, slow OpenMHz requests frequently delayed Broadcastify by the same amount. Examples included OpenMHz delays of ~15, ~22, ~35, ~40, and ~90 seconds, with corresponding Broadcastify skew rejections.
With
parallelPluginCallEndenabled:A representative failure case:
The single Broadcastify skew rejection observed during the test followed a separate Broadcastify SSL connection failure and delayed Broadcastify retry, not cross-plugin blocking.
The service remained stable throughout the test period.
Compatibility
parallelPluginCallEnddefaults tofalse, so this does not change plugin execution semantics unless explicitly enabled.