bigbluebutton / greenlight

A really simple end-user interface for your BigBlueButton server.
GNU Lesser General Public License v3.0
794 stars 3.8k forks source link

GL-v3.0.6 recording_ready and sync extrange behaviour with scalelite #5392

Closed afelpeto closed 1 year ago

afelpeto commented 1 year ago

Hi all, I´m facing some issues with the recordings transfer from scalelite to greenlight.

My setup is the following:

(note that I´ve just migrated one week ago from V2)

Expected behaviour:

  1. When a meeting is finished, the BBB server sends the recording to scalelite
  2. Scalelite hosts the recording and save the metadata into db
  3. Scalelite send a POST request to greenlight letting know that the recording is ready
  4. Greenlight receive the POST request and publish the recording

What really happens

  1. When a meeting is finished the BBB sends OK the recording to scalelite
  2. Scalelite receives the meeting, which is OK extracted and added the metadata to the scalelite database
  3. Scalelite sends a POST request to greenlight.
  4. The POST request goes through Haproxy normally
  5. Greenlight receives the POST and crashes, thus the recording is not stored/listed in greenlight.
  6. Scalelite says that the POST was not processed

In addition... If I resync the recordings from the greenlight admin panel, the already existent/listed meetings in greenlight are being removed and also being marked as deleted in scalelite recordings table. The playback formats (scalelite table) for the meetings that were listed initially in greenlight are removed. Now the missing recording (the one from step 1) appears.

Log files:

I´ve done three recording attempts to gather log information. I post all the info gathered:

First attempt scalelite recording importer

D, [2023-08-24T13:36:44.143291 #7] DEBUG -- : Found /var/bigbluebutton/spool/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381.tar I, [2023-08-24T13:36:44.143861 #7] INFO -- : Importing recording from file: /var/bigbluebutton/spool/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381.tar presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video/webcams.webm presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video/webcams.mp4 presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/captions.json presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation_text.json presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/notes.html presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/metadata.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/slides_new.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/shapes.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/panzooms.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/cursor.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/tldraw.json presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/deskshare.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/textfiles/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/textfiles/slide-1.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/textfiles/slide-2.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/textfiles/slide-3.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/textfiles/slide-4.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/textfiles/slide-5.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/thumbnails/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/thumbnails/thumb-1.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/thumbnails/thumb-2.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/thumbnails/thumb-3.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/thumbnails/thumb-4.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/thumbnails/thumb-5.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/svgs/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/svgs/slide1.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/svgs/slide2.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/svgs/slide3.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/svgs/slide4.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/f0efa8b455229c54650c611f3f08dada763df724-1692884104383/svgs/slide5.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/presentation/logo.png video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/index.html video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video.xml video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-0.m4v video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/captions.json video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/metadata.xml video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/css/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/css/normalize.css video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/css/video.css video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/js/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/js/popcorn.chattimeline.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/js/popcorn-complete.min.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/js/video.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/video.min.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/font/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/font/VideoJS.eot video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/font/VideoJS.woff video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/font/VideoJS.svg video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/font/VideoJS.ttf video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/cs.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ar.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/fa.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ba.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ca.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/de.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/nl.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/es.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/tr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ru.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/da.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/fi.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/bg.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/sv.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/en.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/nn.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/zh-CN.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/el.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/pt-BR.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/sr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/hu.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/zh-TW.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ko.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/uk.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/it.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/vi.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/pl.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/hr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/nb.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/fr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/lang/ja.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/video-js/video-js.min.css I, [2023-08-24T13:36:44.462605 #7] INFO -- : Found metadata file: presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/metadata.xml D, [2023-08-24T13:36:44.472302 #7] DEBUG -- : TRANSACTION (2.9ms) BEGIN D, [2023-08-24T13:36:44.474286 #7] DEBUG -- : Recording Load (1.5ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."record_id" = $1 LIMIT $2 [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.479442 #7] DEBUG -- : Recording Create (1.7ms) INSERT INTO "recordings" ("record_id", "meeting_id", "name", "published", "participants", "state", "starttime", "endtime") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381"], ["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["name", "AF Meeting room"], ["published", true], ["participants", 1], ["state", "published"], ["starttime", "2023-08-24 13:35:04.381000"], ["endtime", "2023-08-24 13:35:26.495000"]] D, [2023-08-24T13:36:44.480699 #7] DEBUG -- : #<Recording id: 145, record_id: "1bf3973c5430f1b513334fc8288bef8635ba79a1-169288410...", meeting_id: "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y", name: "AF Meeting room", published: true, participants: 1, state: "published", starttime: "2023-08-24 13:35:04.381000000 +0000", endtime: "2023-08-24 13:35:26.495000000 +0000", deleted_at: nil, protected: false, publish_updated: false> D, [2023-08-24T13:36:44.483120 #7] DEBUG -- : Metadatum Load (1.0ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "bbb-origin"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.485923 #7] DEBUG -- : Metadatum Create (1.4ms) INSERT INTO "metadata" ("recording_id", "key", "value") VALUES ($1, $2, $3) RETURNING "id" [["recording_id", 145], ["key", "bbb-origin"], ["value", "greenlight"]] D, [2023-08-24T13:36:44.486208 #7] DEBUG -- : #<Metadatum id: 543, recording_id: 145, key: "bbb-origin", value: "greenlight"> D, [2023-08-24T13:36:44.488379 #7] DEBUG -- : Metadatum Load (1.4ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "bbb-origin-version"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.491052 #7] DEBUG -- : Metadatum Create (1.5ms) INSERT INTO "metadata" ("recording_id", "key", "value") VALUES ($1, $2, $3) RETURNING "id" [["recording_id", 145], ["key", "bbb-origin-version"], ["value", "3"]] D, [2023-08-24T13:36:44.491264 #7] DEBUG -- : #<Metadatum id: 544, recording_id: 145, key: "bbb-origin-version", value: "3"> D, [2023-08-24T13:36:44.493235 #7] DEBUG -- : Metadatum Load (1.2ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "endcallbackurl"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.495985 #7] DEBUG -- : Metadatum Create (1.2ms) INSERT INTO "metadata" ("recording_id", "key", "value") VALUES ($1, $2, $3) RETURNING "id" [["recording_id", 145], ["key", "endcallbackurl"], ["value", "https://MY-GREENLIGHT/meeting_ended"]] D, [2023-08-24T13:36:44.496195 #7] DEBUG -- : #<Metadatum id: 545, recording_id: 145, key: "endcallbackurl", value: "https://MY-GREENLIGHT/meeting_ended"> D, [2023-08-24T13:36:44.498977 #7] DEBUG -- : PlaybackFormat Load (1.4ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" = $1 AND "playback_formats"."format" = $2 ORDER BY "playback_formats"."format" ASC LIMIT $3 [["recording_id", 145], ["format", "presentation"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.501988 #7] DEBUG -- : PlaybackFormat Create (1.3ms) INSERT INTO "playback_formats" ("recording_id", "format", "url", "length") VALUES ($1, $2, $3, $4) RETURNING "id" [["recording_id", 145], ["format", "presentation"], ["url", "/playback/presentation/2.3/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381"], ["length", 0]] D, [2023-08-24T13:36:44.502199 #7] DEBUG -- : #<PlaybackFormat id: 145, recording_id: 145, format: "presentation", url: "/playback/presentation/2.3/1bf3973c5430f1b513334fc...", length: 0, processing_time: nil> D, [2023-08-24T13:36:44.504546 #7] DEBUG -- : Thumbnail Load (1.5ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" = $1 ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 145]] D, [2023-08-24T13:36:44.510716 #7] DEBUG -- : TRANSACTION (1.9ms) COMMIT I, [2023-08-24T13:36:44.511206 #7] INFO -- : Found metadata file: video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/metadata.xml D, [2023-08-24T13:36:44.530261 #7] DEBUG -- : TRANSACTION (1.8ms) BEGIN D, [2023-08-24T13:36:44.531994 #7] DEBUG -- : Recording Load (1.4ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."record_id" = $1 LIMIT $2 [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.533076 #7] DEBUG -- : #<Recording id: 145, record_id: "1bf3973c5430f1b513334fc8288bef8635ba79a1-169288410...", meeting_id: "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y", name: "AF Meeting room", published: true, participants: 1, state: "published", starttime: "2023-08-24 13:35:04.381000000 +0000", endtime: "2023-08-24 13:35:26.495000000 +0000", deleted_at: nil, protected: false, publish_updated: false> D, [2023-08-24T13:36:44.535140 #7] DEBUG -- : Metadatum Load (1.1ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "bbb-origin"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.536023 #7] DEBUG -- : #<Metadatum id: 543, recording_id: 145, key: "bbb-origin", value: "greenlight"> D, [2023-08-24T13:36:44.538035 #7] DEBUG -- : Metadatum Load (1.2ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "bbb-origin-version"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.538392 #7] DEBUG -- : #<Metadatum id: 544, recording_id: 145, key: "bbb-origin-version", value: "3"> D, [2023-08-24T13:36:44.540323 #7] DEBUG -- : Metadatum Load (1.1ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "endcallbackurl"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.540924 #7] DEBUG -- : #<Metadatum id: 545, recording_id: 145, key: "endcallbackurl", value: "https://MY-GREENLIGHT/meeting_ended"> D, [2023-08-24T13:36:44.543238 #7] DEBUG -- : PlaybackFormat Load (1.3ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" = $1 AND "playback_formats"."format" = $2 ORDER BY "playback_formats"."format" ASC LIMIT $3 [["recording_id", 145], ["format", "video"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.546429 #7] DEBUG -- : PlaybackFormat Create (1.6ms) INSERT INTO "playback_formats" ("recording_id", "format", "url", "length") VALUES ($1, $2, $3, $4) RETURNING "id" [["recording_id", 145], ["format", "video"], ["url", "/playback/video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381/"], ["length", 0]] D, [2023-08-24T13:36:44.546718 #7] DEBUG -- : #<PlaybackFormat id: 146, recording_id: 145, format: "video", url: "/playback/video/1bf3973c5430f1b513334fc8288bef8635...", length: 0, processing_time: nil> D, [2023-08-24T13:36:44.549189 #7] DEBUG -- : Thumbnail Load (1.5ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" = $1 ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 146]] D, [2023-08-24T13:36:44.553138 #7] DEBUG -- : TRANSACTION (1.2ms) COMMIT D, [2023-08-24T13:36:44.554635 #7] DEBUG -- : CallbackData Load (1.0ms) SELECT "callback_data". FROM "callback_data" WHERE "callback_data"."meeting_id" = $1 LIMIT $2 [["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.556819 #7] DEBUG -- : TRANSACTION (1.3ms) BEGIN D, [2023-08-24T13:36:44.558917 #7] DEBUG -- : CallbackData Exists? (1.8ms) SELECT 1 AS one FROM "callback_data" WHERE "callback_data"."meeting_id" = $1 AND "callback_data"."id" != $2 LIMIT $3 [["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["id", 10], ["LIMIT", 1]] D, [2023-08-24T13:36:44.562273 #7] DEBUG -- : CallbackData Update (1.8ms) UPDATE "callback_data" SET "recording_id" = $1, "updated_at" = $2 WHERE "callback_data"."id" = $3 [["recording_id", 145], ["updated_at", "2023-08-24 13:36:44.559144"], ["id", 10]] D, [2023-08-24T13:36:44.565520 #7] DEBUG -- : TRANSACTION (1.7ms) COMMIT D, [2023-08-24T13:36:44.572102 #7] DEBUG -- : Recording Load (1.5ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."id" = $1 LIMIT $2 [["id", 145], ["LIMIT", 1]] D, [2023-08-24T13:36:44.574090 #7] DEBUG -- : CallbackData Load (1.2ms) SELECT "callback_data". FROM "callback_data" WHERE "callback_data"."meeting_id" = $1 LIMIT $2 [["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["LIMIT", 1]] D, [2023-08-24T13:36:44.576196 #7] DEBUG -- : Metadatum Load (0.9ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 145], ["key", "tenant-id"], ["LIMIT", 1]] I, [2023-08-24T13:36:44.576407 #7] INFO -- : Recording Ready Notify for [zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y] starts I, [2023-08-24T13:36:44.576449 #7] INFO -- : Making callback for recording ready notification I, [2023-08-24T13:36:44.577499 #7] INFO -- : Sending request to https://MY-GREENLIGHT/recording_ready I, [2023-08-24T13:36:44.671697 #7] INFO -- : Callback HTTP request failed: 500 Internal Server Error (code 500)

HAPROXY LOG Aug 24 13:36:44 haproxy-default haproxy[80468]: SCALELITE_PUBLIC_IP:44270 [24/Aug/2023:13:36:44.597] https_in https_seminar/seminar443 1/2/82 4940 -- 2/2/1/1/0 0/0

NGINX LOG

SCALELITE_PUBLIC_IP - - [24/Aug/2023:13:36:44 +0000] "POST /recording_ready HTTP/1.1" 500 0 "-" "Ruby"

GREENLIGHT LOG I, [2023-08-24T13:36:44.668928 #158] INFO -- : [a22d8093-bdfa-4547-bfe5-b957c8acd4d5] method=POST path=/recording_ready format=/ controller=ExternalController action=recording_ready status=500 allocations=2056 duration=62.76 view=0.00 db=4.26 time=2023-08-24 13:36:44 UTC host=greenlight F, [2023-08-24T13:36:44.670347 #158] FATAL -- : [a22d8093-bdfa-4547-bfe5-b957c8acd4d5] [a22d8093-bdfa-4547-bfe5-b957c8acd4d5] NoMethodError (undefined method []' for nil:NilClass): [a22d8093-bdfa-4547-bfe5-b957c8acd4d5] [a22d8093-bdfa-4547-bfe5-b957c8acd4d5] app/services/recording_creator.rb:25:incall' [a22d8093-bdfa-4547-bfe5-b957c8acd4d5] app/controllers/external_controller.rb:93:in `recording_ready' I, [2023-08-24T13:36:45.213426 #158] INFO -- : BigBlueButtonAPI: request=https://MY-SCALELITE/bigbluebutton/api/getRecordings?recordID=1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709&checksum=cebf0c51c5f241c583da4ac1741c8e5e8b0a3ff3 response_status=Net::HTTPOK response_code=200 message_key=OK I, [2023-08-24T13:36:45.273463 #158] INFO -- : [47426e61-ca9e-463c-bc7d-bef4a733934a] [active_model_serializers] Rendered ActiveModel::Serializer::Null with Hash (0.08ms)

SCALELITE-API LOG

I, [2023-08-24T13:36:44.636796 #11] INFO -- : [e98aea18-aaec-4975-862e-f3879865f638] Started GET "/bigbluebutton/api/getRecordings?recordID=1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381&checksum=4b02839572e2d5e6087c59f23e4c9f204a1aa673" for 193.144.42.210 at 2023-08-24 13:36:44 +0000 I, [2023-08-24T13:36:44.638387 #11] INFO -- : [e98aea18-aaec-4975-862e-f3879865f638] Processing by BigBlueButtonApiController#get_recordings as XML I, [2023-08-24T13:36:44.638508 #11] INFO -- : [e98aea18-aaec-4975-862e-f3879865f638] Parameters: {"recordID"=>"1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381", "checksum"=>"4b02839572e2d5e6087c59f23e4c9f204a1aa673"} D, [2023-08-24T13:36:44.643029 #11] DEBUG -- : [e98aea18-aaec-4975-862e-f3879865f638] Rendering bigbluebutton_api/get_recordings.xml.builder D, [2023-08-24T13:36:44.647850 #11] DEBUG -- : [e98aea18-aaec-4975-862e-f3879865f638] Recording Load (3.1ms) SELECT DISTINCT "recordings".* FROM "recordings" LEFT OUTER JOIN "metadata" ON "metadata"."recording_id" = "recordings"."id" WHERE "recordings"."state" IN ($1, $2) AND (record_id LIKE '1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884104381%' ESCAPE '|') ORDER BY "recordings"."starttime" DESC [["state", "published"], ["state", "unpublished"]] I, [2023-08-24T13:36:44.648760 #11] INFO -- : [e98aea18-aaec-4975-862e-f3879865f638] Rendered bigbluebutton_api/get_recordings.xml.builder (Duration: 5.6ms | Allocations: 656) I, [2023-08-24T13:36:44.649090 #11] INFO -- : [e98aea18-aaec-4975-862e-f3879865f638] Completed 200 OK in 10ms (Views: 3.4ms | ActiveRecord: 3.1ms | Allocations: 1132)

Second attempt SCALELITE RECORDING IMPORTER D, [2023-08-24T13:36:44.671805 #7] DEBUG -- : Found /var/bigbluebutton/spool/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709.tar I, [2023-08-24T13:36:44.671894 #7] INFO -- : Importing recording from file: /var/bigbluebutton/spool/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709.tar presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video/webcams.webm presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video/webcams.mp4 presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/captions.json presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation_text.json presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/notes.html presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/metadata.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/slides_new.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/shapes.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/panzooms.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/cursor.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/tldraw.json presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/deskshare.xml presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/textfiles/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/textfiles/slide-1.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/textfiles/slide-2.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/textfiles/slide-3.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/textfiles/slide-4.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/textfiles/slide-5.txt presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/thumbnails/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/thumbnails/thumb-1.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/thumbnails/thumb-2.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/thumbnails/thumb-3.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/thumbnails/thumb-4.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/thumbnails/thumb-5.png presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/svgs/ presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/svgs/slide1.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/svgs/slide2.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/svgs/slide3.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/svgs/slide4.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/55c1b8781d1fadc30e0f9ae69e1120f3f6fc7e24-1692884131712/svgs/slide5.svg presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/presentation/logo.png video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/index.html video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video.xml video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-0.m4v video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/captions.json video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/metadata.xml video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/css/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/css/normalize.css video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/css/video.css video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/js/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/js/popcorn.chattimeline.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/js/popcorn-complete.min.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/js/video.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/video.min.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/font/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/font/VideoJS.eot video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/font/VideoJS.woff video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/font/VideoJS.svg video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/font/VideoJS.ttf video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/cs.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ar.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/fa.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ba.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ca.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/de.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/nl.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/es.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/tr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ru.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/da.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/fi.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/bg.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/sv.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/en.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/nn.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/zh-CN.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/el.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/pt-BR.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/sr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/hu.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/zh-TW.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ko.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/uk.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/it.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/vi.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/pl.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/hr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/nb.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/fr.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/lang/ja.js video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/video-js/video-js.min.css I, [2023-08-24T13:36:45.064133 #7] INFO -- : Found metadata file: presentation/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/metadata.xml D, [2023-08-24T13:36:45.070068 #7] DEBUG -- : TRANSACTION (1.8ms) BEGIN D, [2023-08-24T13:36:45.071464 #7] DEBUG -- : Recording Load (1.1ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."record_id" = $1 LIMIT $2 [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.074874 #7] DEBUG -- : Recording Create (1.2ms) INSERT INTO "recordings" ("record_id", "meeting_id", "name", "published", "participants", "state", "starttime", "endtime") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709"], ["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["name", "AF Meeting room"], ["published", true], ["participants", 1], ["state", "published"], ["starttime", "2023-08-24 13:35:31.709000"], ["endtime", "2023-08-24 13:35:51.776000"]] D, [2023-08-24T13:36:45.075982 #7] DEBUG -- : #<Recording id: 146, record_id: "1bf3973c5430f1b513334fc8288bef8635ba79a1-169288413...", meeting_id: "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y", name: "AF Meeting room", published: true, participants: 1, state: "published", starttime: "2023-08-24 13:35:31.709000000 +0000", endtime: "2023-08-24 13:35:51.776000000 +0000", deleted_at: nil, protected: false, publish_updated: false> D, [2023-08-24T13:36:45.079645 #7] DEBUG -- : Metadatum Load (1.3ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "bbb-origin"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.082510 #7] DEBUG -- : Metadatum Create (1.4ms) INSERT INTO "metadata" ("recording_id", "key", "value") VALUES ($1, $2, $3) RETURNING "id" [["recording_id", 146], ["key", "bbb-origin"], ["value", "greenlight"]] D, [2023-08-24T13:36:45.082691 #7] DEBUG -- : #<Metadatum id: 546, recording_id: 146, key: "bbb-origin", value: "greenlight"> D, [2023-08-24T13:36:45.084846 #7] DEBUG -- : Metadatum Load (1.1ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "bbb-origin-version"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.087611 #7] DEBUG -- : Metadatum Create (1.3ms) INSERT INTO "metadata" ("recording_id", "key", "value") VALUES ($1, $2, $3) RETURNING "id" [["recording_id", 146], ["key", "bbb-origin-version"], ["value", "3"]] D, [2023-08-24T13:36:45.087763 #7] DEBUG -- : #<Metadatum id: 547, recording_id: 146, key: "bbb-origin-version", value: "3"> D, [2023-08-24T13:36:45.090315 #7] DEBUG -- : Metadatum Load (1.6ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "endcallbackurl"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.092549 #7] DEBUG -- : Metadatum Create (1.1ms) INSERT INTO "metadata" ("recording_id", "key", "value") VALUES ($1, $2, $3) RETURNING "id" [["recording_id", 146], ["key", "endcallbackurl"], ["value", "https://MY-GREENLIGHT/meeting_ended"]] D, [2023-08-24T13:36:45.092956 #7] DEBUG -- : #<Metadatum id: 548, recording_id: 146, key: "endcallbackurl", value: "https://MY-GREENLIGHT/meeting_ended"> D, [2023-08-24T13:36:45.095185 #7] DEBUG -- : PlaybackFormat Load (1.0ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" = $1 AND "playback_formats"."format" = $2 ORDER BY "playback_formats"."format" ASC LIMIT $3 [["recording_id", 146], ["format", "presentation"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.097729 #7] DEBUG -- : PlaybackFormat Create (1.2ms) INSERT INTO "playback_formats" ("recording_id", "format", "url", "length") VALUES ($1, $2, $3, $4) RETURNING "id" [["recording_id", 146], ["format", "presentation"], ["url", "/playback/presentation/2.3/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709"], ["length", 0]] D, [2023-08-24T13:36:45.098636 #7] DEBUG -- : #<PlaybackFormat id: 147, recording_id: 146, format: "presentation", url: "/playback/presentation/2.3/1bf3973c5430f1b513334fc...", length: 0, processing_time: nil> D, [2023-08-24T13:36:45.100535 #7] DEBUG -- : Thumbnail Load (1.0ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" = $1 ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 147]] D, [2023-08-24T13:36:45.104802 #7] DEBUG -- : TRANSACTION (1.6ms) COMMIT I, [2023-08-24T13:36:45.104936 #7] INFO -- : Found metadata file: video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/metadata.xml D, [2023-08-24T13:36:45.108172 #7] DEBUG -- : TRANSACTION (1.4ms) BEGIN D, [2023-08-24T13:36:45.109124 #7] DEBUG -- : Recording Load (0.7ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."record_id" = $1 LIMIT $2 [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.110042 #7] DEBUG -- : #<Recording id: 146, record_id: "1bf3973c5430f1b513334fc8288bef8635ba79a1-169288413...", meeting_id: "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y", name: "AF Meeting room", published: true, participants: 1, state: "published", starttime: "2023-08-24 13:35:31.709000000 +0000", endtime: "2023-08-24 13:35:51.776000000 +0000", deleted_at: nil, protected: false, publish_updated: false> D, [2023-08-24T13:36:45.111570 #7] DEBUG -- : Metadatum Load (1.0ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "bbb-origin"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.111921 #7] DEBUG -- : #<Metadatum id: 546, recording_id: 146, key: "bbb-origin", value: "greenlight"> D, [2023-08-24T13:36:45.113362 #7] DEBUG -- : Metadatum Load (0.8ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "bbb-origin-version"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.114566 #7] DEBUG -- : #<Metadatum id: 547, recording_id: 146, key: "bbb-origin-version", value: "3"> D, [2023-08-24T13:36:45.116288 #7] DEBUG -- : Metadatum Load (1.2ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "endcallbackurl"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.117015 #7] DEBUG -- : #<Metadatum id: 548, recording_id: 146, key: "endcallbackurl", value: "https://MY-GREENLIGHT/meeting_ended"> D, [2023-08-24T13:36:45.118736 #7] DEBUG -- : PlaybackFormat Load (0.9ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" = $1 AND "playback_formats"."format" = $2 ORDER BY "playback_formats"."format" ASC LIMIT $3 [["recording_id", 146], ["format", "video"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.121721 #7] DEBUG -- : PlaybackFormat Create (2.2ms) INSERT INTO "playback_formats" ("recording_id", "format", "url", "length") VALUES ($1, $2, $3, $4) RETURNING "id" [["recording_id", 146], ["format", "video"], ["url", "/playback/video/1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709/"], ["length", 0]] D, [2023-08-24T13:36:45.121880 #7] DEBUG -- : #<PlaybackFormat id: 148, recording_id: 146, format: "video", url: "/playback/video/1bf3973c5430f1b513334fc8288bef8635...", length: 0, processing_time: nil> D, [2023-08-24T13:36:45.123379 #7] DEBUG -- : Thumbnail Load (0.9ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" = $1 ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 148]] D, [2023-08-24T13:36:45.126609 #7] DEBUG -- : TRANSACTION (1.3ms) COMMIT D, [2023-08-24T13:36:45.128349 #7] DEBUG -- : CallbackData Load (1.0ms) SELECT "callback_data". FROM "callback_data" WHERE "callback_data"."meeting_id" = $1 LIMIT $2 [["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.130401 #7] DEBUG -- : TRANSACTION (1.2ms) BEGIN D, [2023-08-24T13:36:45.131563 #7] DEBUG -- : CallbackData Exists? (1.0ms) SELECT 1 AS one FROM "callback_data" WHERE "callback_data"."meeting_id" = $1 AND "callback_data"."id" != $2 LIMIT $3 [["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["id", 10], ["LIMIT", 1]] D, [2023-08-24T13:36:45.133732 #7] DEBUG -- : CallbackData Update (1.1ms) UPDATE "callback_data" SET "recording_id" = $1, "updated_at" = $2 WHERE "callback_data"."id" = $3 [["recording_id", 146], ["updated_at", "2023-08-24 13:36:45.131664"], ["id", 10]] D, [2023-08-24T13:36:45.136201 #7] DEBUG -- : TRANSACTION (1.3ms) COMMIT D, [2023-08-24T13:36:45.143421 #7] DEBUG -- : Recording Load (1.3ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."id" = $1 LIMIT $2 [["id", 146], ["LIMIT", 1]] D, [2023-08-24T13:36:45.145398 #7] DEBUG -- : CallbackData Load (1.3ms) SELECT "callback_data". FROM "callback_data" WHERE "callback_data"."meeting_id" = $1 LIMIT $2 [["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"], ["LIMIT", 1]] D, [2023-08-24T13:36:45.147347 #7] DEBUG -- : Metadatum Load (1.0ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 AND "metadata"."key" = $2 LIMIT $3 [["recording_id", 146], ["key", "tenant-id"], ["LIMIT", 1]] I, [2023-08-24T13:36:45.147553 #7] INFO -- : Recording Ready Notify for [zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y] starts I, [2023-08-24T13:36:45.147609 #7] INFO -- : Making callback for recording ready notification I, [2023-08-24T13:36:45.148003 #7] INFO -- : Sending request to https://MY-GREENLIGHT/recording_ready I, [2023-08-24T13:36:45.274474 #7] INFO -- : Recording notifier successful: zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y (code 200)

HAPROXY LOG Aug 24 13:36:45 haproxy-default haproxy[80468]: SCALELITE_PUBLIC_IP:44274 [24/Aug/2023:13:36:45.159] https_in https_seminar/seminar443 1/1/122 5260 -- 2/2/1/1/0 0/0

NGINX LOG SCALELITE_PUBLIC_IP - - [24/Aug/2023:13:36:45 +0000] "POST /recording_ready HTTP/1.1" 200 12 "-" "Ruby"

GREENLIGHT LOG I, [2023-08-24T13:36:45.274107 #158] INFO -- : [47426e61-ca9e-463c-bc7d-bef4a733934a] method=POST path=/recording_ready format=/ controller=ExternalController action=recording_ready status=200 allocations=8125 duration=108.14 view=4.27 db=26.19 time=2023-08-24 13:36:45 UTC host=greenlight I, [2023-08-24T13:36:45.830841 #158] INFO -- : BigBlueButtonAPI: request=https://MY-SCALELITE/bigbluebutton/api/getRecordings?recordID=1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884157778&checksum=ad5ca096925b5df5630e0223aedcdd4e25814866 response_status=Net::HTTPOK response_code=200 message_key=OK

SCALELITE-API LOG

I, [2023-08-24T13:36:45.186605 #11] INFO -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Started GET "/bigbluebutton/api/getRecordings?recordID=1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709&checksum=cebf0c51c5f241c583da4ac1741c8e5e8b0a3ff3" for 193.144.42.210 at 2023-08-24 13:36:45 +0000 I, [2023-08-24T13:36:45.188079 #11] INFO -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Processing by BigBlueButtonApiController#get_recordings as XML I, [2023-08-24T13:36:45.188291 #11] INFO -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Parameters: {"recordID"=>"1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709", "checksum"=>"cebf0c51c5f241c583da4ac1741c8e5e8b0a3ff3"} D, [2023-08-24T13:36:45.192141 #11] DEBUG -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Rendering bigbluebutton_api/get_recordings.xml.builder D, [2023-08-24T13:36:45.196702 #11] DEBUG -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Recording Load (3.1ms) SELECT DISTINCT "recordings". FROM "recordings" LEFT OUTER JOIN "metadata" ON "metadata"."recording_id" = "recordings"."id" WHERE "recordings"."state" IN ($1, $2) AND (record_id LIKE '1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709%' ESCAPE '|') ORDER BY "recordings"."starttime" DESC [["state", "published"], ["state", "unpublished"]] D, [2023-08-24T13:36:45.200129 #11] DEBUG -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] PlaybackFormat Load (1.1ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" = $1 ORDER BY "playback_formats"."format" ASC [["recording_id", 146]] D, [2023-08-24T13:36:45.203383 #11] DEBUG -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Thumbnail Load (1.3ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" IN ($1, $2) ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 147], ["playback_format_id", 148]] D, [2023-08-24T13:36:45.206688 #11] DEBUG -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Metadatum Load (2.1ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 [["recording_id", 146]] I, [2023-08-24T13:36:45.208363 #11] INFO -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Rendered bigbluebutton_api/get_recordings.xml.builder (Duration: 16.1ms | Allocations: 2401) I, [2023-08-24T13:36:45.208749 #11] INFO -- : [dd4585f3-5473-44d8-95e6-8df3f9204c11] Completed 200 OK in 20ms (Views: 9.3ms | ActiveRecord: 7.7ms | Allocations: 2875)

On this ocassion it worked (I hadn´t luck anymore) and the meeting is being listed

Third attempt Exactly the same behaviour as the first one.

Reached this point...

  1. I can only see the recording of the second attempt plus the alredy existent.
  2. I pressed over "sync recordings" on greenlight gui and this happened:

Greenlight log

I, [2023-08-24T13:44:07.923404 #158] INFO -- : [64a0c5ac-a43d-4c1d-b9a3-6f80a8fa20d4] method=GET path=/api/v1/admin/server_rooms.json format=json controller=Api::V1::Admin::ServerRoomsController action=index status=200 allocations=10721 duration=64.53 view=5.24 db=40.16 time=2023-08-24 13:44:07 UTC host=greenlight I, [2023-08-24T13:44:07.941444 #158] INFO -- : [d3f87be4-738d-41aa-8787-5f5d03161610] [active_model_serializers] Rendered CurrentUserSerializer with ActiveModelSerializers::Adapter::Json (62.12ms) I, [2023-08-24T13:44:07.942581 #158] INFO -- : [d3f87be4-738d-41aa-8787-5f5d03161610] method=GET path=/api/v1/sessions.json format=json controller=Api::V1::SessionsController action=index status=200 allocations=16685 duration=106.20 view=9.97 db=69.82 time=2023-08-24 13:44:07 UTC host= I, [2023-08-24T13:44:11.999853 #158] INFO -- : BigBlueButtonAPI: request=https://MY_SCALELITE/bigbluebutton/api/deleteRecordings?recordID=1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709&checksum=829b9c1eaf941007795a43a3e0a4aa7e85859436 response_status=Net::HTTPOK response_code=200 message_key=OK I, [2023-08-24T13:44:12.089823 #158] INFO -- : BigBlueButtonAPI: request=https://MY_SCALELITE/bigbluebutton/api/getRecordings?meetingID=zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y&checksum=dcfa3451e2f5baea736bf17679bd7ad3e640cc87 response_status=Net::HTTPOK response_code=200 message_key=OK E, [2023-08-24T13:44:12.290047 #158] ERROR -- : [6794f981-0327-4b74-8a86-1178be684f3c] undefined method []' for nil:NilClass E, [2023-08-24T13:44:12.290459 #158] ERROR -- : [6794f981-0327-4b74-8a86-1178be684f3c] /usr/src/app/app/services/recording_creator.rb:74:inget_recording_length' I, [2023-08-24T13:44:12.291584 #158] INFO -- : [6794f981-0327-4b74-8a86-1178be684f3c] [active_model_serializers] Rendered ActiveModel::Serializer::Null with Hash (0.17ms) I, [2023-08-24T13:44:12.292201 #158] INFO -- : [6794f981-0327-4b74-8a86-1178be684f3c] method=GET path=/api/v1/admin/server_rooms/abr-jdz-ihg-xwa/resync.json format=json controller=Api::V1::Admin::ServerRoomsController action=resync status=500 allocations=17447 duration=702.42 view=1.10 db=318.06 time=2023-08-24 13:44:12 UTC host=greenlight

SCALELITE-API LOG I, [2023-08-24T13:44:11.801265 #11] INFO -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Started GET "/bigbluebutton/api/deleteRecordings?recordID=1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709&checksum=829b9c1eaf941007795a43a3e0a4aa7e85859436" for 193.144.42.210 at 2023-08-24 13:44:11 +0000 I, [2023-08-24T13:44:11.803301 #11] INFO -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Processing by BigBlueButtonApiController#delete_recordings as XML I, [2023-08-24T13:44:11.803427 #11] INFO -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Parameters: {"recordID"=>"1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709", "checksum"=>"829b9c1eaf941007795a43a3e0a4aa7e85859436"} D, [2023-08-24T13:44:11.821601 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Recording Load (5.4ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."record_id" = $1 [["record_id", "1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709"]] D, [2023-08-24T13:44:11.826694 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Metadatum Load (3.8ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 [["recording_id", 146]] D, [2023-08-24T13:44:11.831881 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] TRANSACTION (3.3ms) BEGIN D, [2023-08-24T13:44:11.836303 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Recording Load (4.1ms) SELECT "recordings". FROM "recordings" WHERE "recordings"."id" = $1 LIMIT $2 FOR UPDATE [["id", 146], ["LIMIT", 1]] D, [2023-08-24T13:44:11.836892 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Deleting recording: 1bf3973c5430f1b513334fc8288bef8635ba79a1-1692884131709 D, [2023-08-24T13:44:11.934704 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Metadatum Load (5.2ms) SELECT "metadata". FROM "metadata" WHERE "metadata"."recording_id" = $1 [["recording_id", 146]] D, [2023-08-24T13:44:11.941651 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Metadatum Destroy (4.7ms) DELETE FROM "metadata" WHERE "metadata"."id" = $1 [["id", 546]] D, [2023-08-24T13:44:11.945017 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Metadatum Destroy (2.4ms) DELETE FROM "metadata" WHERE "metadata"."id" = $1 [["id", 547]] D, [2023-08-24T13:44:11.949234 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Metadatum Destroy (3.5ms) DELETE FROM "metadata" WHERE "metadata"."id" = $1 [["id", 548]] D, [2023-08-24T13:44:11.956291 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] PlaybackFormat Load (5.1ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" = $1 ORDER BY "playback_formats"."format" ASC [["recording_id", 146]] D, [2023-08-24T13:44:11.960891 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Thumbnail Load (2.4ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" = $1 ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 147]] D, [2023-08-24T13:44:11.966158 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] PlaybackFormat Destroy (4.3ms) DELETE FROM "playback_formats" WHERE "playback_formats"."id" = $1 [["id", 147]] D, [2023-08-24T13:44:11.972387 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Thumbnail Load (4.5ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" = $1 ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 148]] D, [2023-08-24T13:44:11.978316 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] PlaybackFormat Destroy (5.1ms) DELETE FROM "playback_formats" WHERE "playback_formats"."id" = $1 [["id", 148]] D, [2023-08-24T13:44:11.986417 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Recording Update (6.3ms) UPDATE "recordings" SET "state" = $1 WHERE "recordings"."id" = $2 [["state", "deleted"], ["id", 146]] D, [2023-08-24T13:44:11.991441 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] TRANSACTION (4.0ms) COMMIT D, [2023-08-24T13:44:11.992494 #11] DEBUG -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Rendering bigbluebutton_api/delete_recordings.xml.builder I, [2023-08-24T13:44:11.993363 #11] INFO -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Rendered bigbluebutton_api/delete_recordings.xml.builder (Duration: 0.6ms | Allocations: 122) I, [2023-08-24T13:44:11.994034 #11] INFO -- : [1df1bf59-c176-4fe1-808b-20ba8cae9bb5] Completed 200 OK in 190ms (Views: 1.8ms | ActiveRecord: 64.0ms | Allocations: 4229) I, [2023-08-24T13:44:12.043589 #11] INFO -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Started GET "/bigbluebutton/api/getRecordings?meetingID=zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y&checksum=dcfa3451e2f5baea736bf17679bd7ad3e640cc87" for 193.144.42.210 at 2023-08-24 13:44:12 +0000 I, [2023-08-24T13:44:12.045607 #11] INFO -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Processing by BigBlueButtonApiController#get_recordings as XML I, [2023-08-24T13:44:12.045733 #11] INFO -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Parameters: {"meetingID"=>"zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y", "checksum"=>"dcfa3451e2f5baea736bf17679bd7ad3e640cc87"} D, [2023-08-24T13:44:12.055356 #11] DEBUG -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Rendering bigbluebutton_api/get_recordings.xml.builder D, [2023-08-24T13:44:12.064037 #11] DEBUG -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Recording Load (6.1ms) SELECT DISTINCT "recordings". FROM "recordings" LEFT OUTER JOIN "metadata" ON "metadata"."recording_id" = "recordings"."id" WHERE "recordings"."state" IN ($1, $2) AND "recordings"."meeting_id" = $3 ORDER BY "recordings"."starttime" DESC [["state", "published"], ["state", "unpublished"], ["meeting_id", "zyxhbx9q60cmdi8btaf0eokcmpzsel2ndldnlk3y"]] D, [2023-08-24T13:44:12.070409 #11] DEBUG -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] PlaybackFormat Load (2.6ms) SELECT "playback_formats". FROM "playback_formats" WHERE "playback_formats"."recording_id" IN ($1, $2, $3) ORDER BY "playback_formats"."format" ASC [["recording_id", 147], ["recording_id", 146], ["recording_id", 145]] D, [2023-08-24T13:44:12.074785 #11] DEBUG -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Thumbnail Load (2.3ms) SELECT "thumbnails". FROM "thumbnails" WHERE "thumbnails"."playback_format_id" IN ($1, $2, $3, $4) ORDER BY "thumbnails"."sequence" ASC [["playback_format_id", 145], ["playback_format_id", 149], ["playback_format_id", 146], ["playback_format_id", 150]] D, [2023-08-24T13:44:12.079072 #11] DEBUG -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Metadatum Load (2.9ms) SELECT "metadata".* FROM "metadata" WHERE "metadata"."recording_id" IN ($1, $2, $3) [["recording_id", 147], ["recording_id", 146], ["recording_id", 145]] I, [2023-08-24T13:44:12.084726 #11] INFO -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Rendered bigbluebutton_api/get_recordings.xml.builder (Duration: 29.2ms | Allocations: 4031) I, [2023-08-24T13:44:12.085105 #11] INFO -- : [a7e1271b-137e-4397-82b0-c3c70fc3db95] Completed 200 OK in 39ms (Views: 16.1ms | ActiveRecord: 14.1ms | Allocations: 4493)

Final result Right now, the successfully recording (the second one from the third attempts) was removed from the database, and as the getRecordings method returns an "undefined method" error, it can´t store the new recordings.

Please note that after all the tests that i´ve done, it randomly works, but most times it appears the NoMethodError (undefined method `[]' for nil:NilClass): I succeded only once with the direct transfer and 2-3 with the resync method (but in this case it only appears the last meeting but not the previous ones - because it most of them were removed from scalelite)

*IMPORTANT NOTE ABOUT .ENV FILE Althought I use scalelite, I use the following variables as there arent other indicated for the use of scalelite, and I´ve been using these variables from years ago.

###BIGBLUEBUTTON CREDENTIALS
# Set these if you are running GreenLight on a single BigBlueButton server.
# You can retrieve these by running the following command on your BigBlueButton server:
#   bbb-conf --secret
BIGBLUEBUTTON_ENDPOINT=
BIGBLUEBUTTON_SECRET=

Nevertheless, I´ve found that @farhatahmad have changed this some days ago #5317 which lead me towards this

@provider = provider @endpoint = File.join(ENV.fetch('LOADBALANCER_ENDPOINT'), '/api/') @secret = ENV.fetch('LOADBALANCER_SECRET') @route = 'getUser'

Could be the case that instead of LOADBALANCER_SECRET and LOADBALANCER_ENDPOINT it should say BIGBLUEBUTTON_ENDPOINT and LOADBALANCER_SECRET? There are other files indicating LOADBALANCER instead of BIGBLUEBUTTON

Any idea/help on this would be much appreciate it.

Best regards

Best regards

afelpeto commented 1 year ago

OK I solved the issue. The thing is the following:

greenlight(app/services/big_blue_button_api.rb) verifies the recording_ready POST by using the HS256 algorithm

# Decodes the JWT using the BBB secret as key (Used in Recording Ready Callback) def decode_jwt(token) JWT.decode token, @secret, true, { algorithm: 'HS256' } end

and scalelite (app/services/recording_ready_notifier_service.rb) sends the information withouth algorithm

def encoded_payload(meeting_id, record_id, tenant_name) secret = fetch_secrets(tenant_name: tenant_name)[0] payload = { meeting_id: meeting_id, record_id: record_id } JWT.encode(payload, secret) end

I´ve changed my greenlight

from
JWT.decode token, @secret, true, { algorithm: 'HS256' }
to
JWT.decode token, @secret, false

and now it works like a charm... but there is still the issue about the resync removing all the room recordings!!

Best regards

lonesomewalker commented 1 year ago

Can verify, have the same issue syncing Scalelite with Greenlight.

afelpeto commented 1 year ago

@lonesomewalker in our case, to prevent the recording deletion from scalelite, what we´ve done is to remove/comment the following line:

@room.recordings.destroy_all

in app/services/recordings_sync.rb

Then once you use the "resync recordings" button, it will work fine.

farhatahmad commented 1 year ago

This seems to be a Scalelite issue rather than a Greenlight issue. GL does what the BBB docs suggests (https://docs.bigbluebutton.org/development/api#recording-ready-callback-url). Please open an issue in Scalelite

Ithanil commented 1 year ago

OK I solved the issue. The thing is the following:

greenlight(app/services/big_blue_button_api.rb) verifies the recording_ready POST by using the HS256 algorithm

# Decodes the JWT using the BBB secret as key (Used in Recording Ready Callback) def decode_jwt(token) JWT.decode token, @secret, true, { algorithm: 'HS256' } end

and scalelite (app/services/recording_ready_notifier_service.rb) sends the information withouth algorithm

def encoded_payload(meeting_id, record_id, tenant_name) secret = fetch_secrets(tenant_name: tenant_name)[0] payload = { meeting_id: meeting_id, record_id: record_id } JWT.encode(payload, secret) end

I´ve changed my greenlight

from
JWT.decode token, @secret, true, { algorithm: 'HS256' }
to
JWT.decode token, @secret, false

and now it works like a charm... but there is still the issue about the resync removing all the room recordings!!

Best regards

I don't think the actual issue is the algorithm, because HS256 is the default for JWT.encode. The actual issue seems to be the secret that is used by Scalelite for signing the payload... it is always LOADBALANCER_SECRET, but the frontend could be configured with one of many LOADBALANCER_SECRETS (note the trailing S). In this case the signature verification does not work, obviously.

@farhatahmad Yes, it is indeed a Scalelite issue. But until it is fixed there, the signature verification needs to be turned off here. (i.e. JWT.decode token, @secret, false)

nicolopez77 commented 4 months ago

So was this finally solved? We've upgraded our GL to v3 and have the current version of SL.

Ithanil commented 4 months ago

So was this finally solved? We've upgraded our GL to v3 and have the current version of SL.

No, you still need to use the fix above if you want to use a different secret for GL than the main LOADBALANCER_SECRET. There is no straightforward way to fix this is in Scalelite.

nicolopez77 commented 4 months ago

So was this finally solved? We've upgraded our GL to v3 and have the current version of SL.

No, you still need to use the fix above if you want to use a different secret for GL than the main LOADBALANCER_SECRET. There is no straightforward way to fix this is in Scalelite.

Our SL has just a LOADBALANCER_SECRET (without S) and GL a BIGBLUEBUTTON_SECRET. We see the "Callback HTTP request failed: 500 Internal Server Error" in the SL log. As a workaround we scheduled the server_recordings_sync to run every minute. So I'm a bit confused, it looks like we should not be facing this issue, right?

Ithanil commented 4 months ago

So was this finally solved? We've upgraded our GL to v3 and have the current version of SL.

No, you still need to use the fix above if you want to use a different secret for GL than the main LOADBALANCER_SECRET. There is no straightforward way to fix this is in Scalelite.

Our SL has just a LOADBALANCER_SECRET (without S) and GL a BIGBLUEBUTTON_SECRET. We see the "Callback HTTP request failed: 500 Internal Server Error" in the SL log. As a workaround we scheduled the server_recordings_sync to run every minute. So I'm a bit confused, it looks like we should not be facing this issue, right?

No, I would think you shouldn't face this issue then.