bigbluebutton-docker
bigbluebutton-docker copied to clipboard
Recording for Moodle-BBB-Rooms
Hello! When I create a room using greenlight, I am able to record that session.
But when I create a room using moodle (and the plugin to connect bbb with moodle), I am not able to record that session - there is no recording afterwards, even if I try to search on the cli.
Is this a known issue, or is there a way to resolve this?
Best regards
Can you check the log files? I quickly checked the recording implementation here & what moodle does. I am no expert in this area but I don't see an obvious thing.
You are sure, that you enabled the recording feature in moodle and have it either auto record or started the recording in the conference?
You can run docker logs
to see log files of all docker containers. Use docker logs -f
to keep them attached (it will still display the whole log since container start before), then create & join a meeting using moodle and watch if anything seems broken.
Hello! It took me quite a while to find a timeslot to test this - sorry for the late response.
I figured out, that after ending the meeting in moodle, the recording container has some errors.
Here is the error message:
execute workers...
rap-worker | I, [2020-11-20T08:44:32.823322 #74] INFO -- : Executing: ruby archive/archive.rb -m df3ee83b5b42da50643b7171fe37c3c1aff7837d-1605861778505
rap-worker | I, [2020-11-20T08:44:33.201768 #74] INFO -- : /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:232:in `tr': invalid byte sequence in US-ASCII (ArgumentError)
rap-worker | I, [2020-11-20T08:44:33.201884 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:232:in `strip_control_chars'
rap-worker | I, [2020-11-20T08:44:33.201930 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:324:in `block (2 levels) in store_events'
rap-worker | I, [2020-11-20T08:44:33.201971 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:317:in `each'
rap-worker | I, [2020-11-20T08:44:33.202089 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:317:in `block in store_events'
rap-worker | I, [2020-11-20T08:44:33.202165 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:311:in `each'
rap-worker | I, [2020-11-20T08:44:33.202201 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:311:in `each_with_index'
rap-worker | I, [2020-11-20T08:44:33.202244 #74] INFO -- : from /usr/local/bigbluebutton/core/lib/recordandplayback/events_archiver.rb:311:in `store_events'
rap-worker | I, [2020-11-20T08:44:33.202280 #74] INFO -- : from archive/archive.rb:38:in `archive_events'
rap-worker | I, [2020-11-20T08:44:33.202317 #74] INFO -- : from archive/archive.rb:197:in `<main>'
rap-worker | I, [2020-11-20T08:44:33.204356 #74] INFO -- : Success?: false
rap-worker | I, [2020-11-20T08:44:33.204417 #74] INFO -- : Process exited? true
rap-worker | I, [2020-11-20T08:44:33.204449 #74] INFO -- : Exit status: 1
rap-worker | E, [2020-11-20T08:44:33.204873 #74] ERROR -- : Failed to archive df3ee83b5b42da50643b7171fe37c3c1aff7837d-1605861778505
That looks strange - is there an argument missing, or is the encoding not right?
Thanks for looking into it! @alangecker I didn't look into it, but are you aware of any locale fuckups, e.g. should it be UTF8
-something but defaults to C
?
https://groups.google.com/g/bigbluebutton-dev/c/jYR0kNMZkts https://github.com/bigbluebutton/bigbluebutton/issues/9491
Sorry to bump this old issue. This error occured on our servers since the last update to 2.2.36. However this only happens if there is a non-ascii Character in the metadata (e.g. meetingName = Täst
).
I did some debugging in the events_archiver.rb
and found out the following:
Ruby gets the Metadatastrings from redis in Line 261 of events_archiver.rb
. For debugging purposes I put the following in Line 281 so that the block loocked like this:
meeting_metadata.each do |k, v|
BigBlueButton.logger.error("Key: #{k} Value: #{v} Encoding: #{v.encoding}")
metadata[strip_control_chars(k)] = strip_control_chars(v)
end
This led to the following output:
I, [2021-04-09T14:47:24.971335 #3525] INFO -- : Archiving events for 907c6100bf4c65a8f381b73781f6bb52f17a06a0-1617972405342
E, [2021-04-09T14:47:24.972191 #3525] ERROR -- : Key: bbb-origin Value: Greenlight Encoding: US-ASCII
E, [2021-04-09T14:47:24.972230 #3525] ERROR -- : Key: bbb-origin-server-name Value: xxx Encoding: US-ASCII
E, [2021-04-09T14:47:24.972247 #3525] ERROR -- : Key: bbb-origin-version Value: release-2.8.2.2 Encoding: US-ASCII
E, [2021-04-09T14:47:24.972261 #3525] ERROR -- : Key: gl-listed Value: false Encoding: US-ASCII
E, [2021-04-09T14:47:24.972275 #3525] ERROR -- : Key: isBreakout Value: false Encoding: US-ASCII
E, [2021-04-09T14:47:24.972287 #3525] ERROR -- : Key: meetingId Value: yyy Encoding: US-ASCII
E, [2021-04-09T14:47:24.972306 #3525] ERROR -- : Key: meetingName Value: Täst Encoding: US-ASCII
That last line is odd because US-ASCII does not have a representation for ä
. Something is going wrong with the encoding here but I was not able to find the source of the problem.
A bit of further testing revealed that the supposedly US-ASCII strings are actually UTF-8 Strings. Only ruby thinks they are not.
As a workaround I changed the method strip_control_chars()
from
def strip_control_chars(str)
str.tr("\x00-\x08\x0B\x0C\x0E-\x1F\x7F", '')
end
to
def strip_control_chars(str)
tstr = str.dup
tstr.force_encoding("UTF-8")
tstr.tr("\x00-\x08\x0B\x0C\x0E-\x1F\x7F", '')
str = tstr
end
I tested it and it works for meetings with or without special characters. However I don't know much about ruby to confidently say that this is a good fix.