mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-02-04 09:56:47 +00:00
stacks-reflector-worker-1 | [2025-07-17 02:18:21,234:
ERROR/ForkPoolWorker-2] Task
reflector.worker.process.process_meetings[8e763caf-be8a-4272-8793-7b918e4e3922]
raised unexpected: AssertionError('DatabaseBackend is not running')
stacks-reflector-worker-1 | Traceback (most recent call last):
stacks-reflector-worker-1 | File
"/app/.venv/lib/python3.12/site-packages/celery/app/trace.py", line 453,
in trace_task
stacks-reflector-worker-1 | R = retval = fun(*args, **kwargs)
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/app/.venv/lib/python3.12/site-packages/celery/app/trace.py", line 736,
in __protected_call__
stacks-reflector-worker-1 | return self.run(*args, **kwargs)
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/app/reflector/pipelines/main_live_pipeline.py", line 81, in wrapper
stacks-reflector-worker-1 | return asyncio.run(coro)
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/usr/local/lib/python3.12/asyncio/runners.py", line 195, in run
stacks-reflector-worker-1 | return runner.run(main)
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
stacks-reflector-worker-1 | return
self._loop.run_until_complete(task)
stacks-reflector-worker-1 |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in
run_until_complete
stacks-reflector-worker-1 | return future.result()
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File "/app/reflector/worker/process.py",
line 139, in process_meetings
stacks-reflector-worker-1 | meetings = await
meetings_controller.get_all_active()
stacks-reflector-worker-1 |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File "/app/reflector/db/meetings.py",
line 121, in get_all_active
stacks-reflector-worker-1 | return await database.fetch_all(query)
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/app/.venv/lib/python3.12/site-packages/databases/core.py", line 173,
in fetch_all
stacks-reflector-worker-1 | async with self.connection() as
connection:
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | File
"/app/.venv/lib/python3.12/site-packages/databases/core.py", line 267,
in __aenter__
stacks-reflector-worker-1 | raise e
stacks-reflector-worker-1 | File
"/app/.venv/lib/python3.12/site-packages/databases/core.py", line 264,
in __aenter__
stacks-reflector-worker-1 | await self._connection.acquire()
stacks-reflector-worker-1 | File
"/app/.venv/lib/python3.12/site-packages/databases/backends/postgres.py",
line 169, in acquire
stacks-reflector-worker-1 | assert self._database._pool is not
None, "DatabaseBackend is not running"
stacks-reflector-worker-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stacks-reflector-worker-1 | AssertionError: DatabaseBackend is not
running
AWS S3/SQS usage clarification
Whereby.com uploads recordings directly to our S3 bucket when meetings end.
SQS Queue (AWS_PROCESS_RECORDING_QUEUE_URL)
Filled by: AWS S3 Event Notifications
The S3 bucket is configured to send notifications to our SQS queue when new objects are created. This is standard AWS infrastructure - not in our codebase.
AWS S3 → SQS Event Configuration:
- Event Type: s3:ObjectCreated:*
- Filter: *.mp4 files
- Destination: Our SQS queue
Our System's Role
Polls SQS every 60 seconds via /server/reflector/worker/process.py:24-62:
Every 60 seconds, check for new recordings
sqs = boto3.client("sqs", ...) response = sqs.receive_message(QueueUrl=queue_url, ...)