Fix 21125#23
Draft
antobinary wants to merge 3 commits into
Draft
Conversation
…ipts The screenshare, notes and podcast scripts loaded bigbluebutton.yml directly, ignoring /etc/bigbluebutton/recording/recording.yml, so playback_host/playback_protocol overrides never reached their metadata links. The video and screenshare publish scripts also copied the process-time metadata.xml verbatim, so a link baked with stale config was never refreshed on (re)publish. Load props via BigBlueButton.read_props everywhere and regenerate the playback link at publish time, matching the presentation format. Fixes bigbluebutton#21125 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
read_props cached its result in a module ivar, so long-lived processes like the resque workers kept serving stale config: editing /etc/bigbluebutton/recording/recording.yml had no effect until the worker was restarted. Drop the cache and re-read both files per call, switch to YAML.safe_load, tolerate an empty override file (previously a TypeError on merge(nil)), and take the override path as a parameter so the behavior is testable. Add a minitest covering merge precedence, per-call reload, and the empty/missing override cases. Reworked from bigbluebutton#25042 (which targeted v3.0.x-develop). Fixes bigbluebutton#21125 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fresh Add the video.yml override row, note that recording.yml is honored by all recording formats without a worker restart, and show a playback_host/playback_protocol example with the rebuild path for correcting links of already-published recordings. Part of bigbluebutton#21125 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
🚨 Automated tests failed |
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.
What does this PR do?
Fixes recording playback links ignoring
/etc/bigbluebutton/recording/recording.ymloverrides (playback_host/playback_protocol), reported for bbb-playback-video in bigbluebutton#21125 but actually affecting several formats, in three parts:bigbluebutton.ymldirectly, so the override file was never consulted. They now load props viaBigBlueButton.read_props, the same override-merging loader the presentation and video formats already use.metadata.xmlverbatim, so a playback link baked in at process time was never refreshed — changing the override afterwards (and republishing) had no effect, forcing admins to hand-edit metadata files. The publish scripts now regenerate<playback><link>from current props at publish time, matching the presentation format.read_propscached its result in a module ivar, so the resque workers kept serving stale config until restarted. It now re-reads both files on every call, usesYAML.safe_load(withaliases: true), tolerates an empty override file (previously aTypeErrorcrash), and takes the override path as a parameter for testability. A minitest covers merge precedence, per-call reload, and the empty/missing override cases.Docs:
configuration-files.mdgains thevideo.ymloverride row, notes on therecording.ymlrow, and aplayback_host/playback_protocolexample including how to correct links of already-published recordings (bbb-record --rebuild).Closes Issue(s)
Closes bigbluebutton#21125
Motivation
Deployments that terminate TLS elsewhere or serve playback from a different hostname configure
playback_host/playback_protocolinrecording.yml, and integrations like Greenlight consume the link frommetadata.xml. When formats bypass the override — or workers cache it — published links point at the wrong protocol/domain and every affected recording needs manual correction.How to test
/etc/bigbluebutton/recording/recording.ymlwith a distinctiveplayback_host(e.g.playback.example.com) andplayback_protocol: https. Do not restart the recording workers.metadata.xmlin the published directory:<link>must use the override host/protocol.playback_hostinrecording.yml, remove the published dir and thestatus/published/<id>-video.donefile, re-run the publish script only — the published link must reflect the new value without reprocessing.cd record-and-playback/core && bundle exec ruby -Ilib test/recordandplayback/test_read_props.rb.Verified on a 4.0 (
v4.0.x-develop) server: the previous direct-YAML load returns the non-override host whileread_propsreturns the override; the publish-time refresh rewrites a stale process-time link to the current override URL for both video and screenshare link formats; and the new minitest passes (4 runs, 8 assertions) under the server's Ruby 3.2 bundle. All modified scripts passruby -c.More
events_archiver.rb,rap-process-worker.rb, caption utilities,post_eventsexamples) still readbigbluebutton.ymldirectly; none of them build playback links.🤖 Generated with Claude Code