numerique-gouv / b3desk

BBB frontend by the French Ministry of Education

Home Page:https://b3desk.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bug - upload document dans BBB FILE_SHARING=on

BHoury opened this issue · comments

Bonjour,
Sur B3desk 1.1.3 nous observons 2 bugs qui doivent être liés, quand le téléversement est activé "FILE_SHARING=on":

  • pour toutes les visios le pdf d'accueil de BBB n'est pas chargé
  • pour les visios avec fichiers associés -> les fichiers ne sont pas chargés dans BBB.

Aucune information dans les logs gunicorn.

Cdt
Benjamin Houry

Voici le message d'erreur que je vois en local dans les journaux de celery:

worker  | [2024-03-15 14:03:17,441: WARNING/ForkPoolWorker-8] --- Logging error ---
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8] Traceback (most recent call last):
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 451, in trace_task
worker  |     R = retval = fun(*args, **kwargs)
worker  |                  ^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 734, in __protected_call__
worker  |     return self.run(*args, **kwargs)
worker  |            ^^^^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8] TypeError: background_upload() missing 1 required positional argument: 'params'
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8]
worker  | During handling of the above exception, another exception occurred:
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8] Traceback (most recent call last):
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/logging/__init__.py", line 1110, in emit
worker  |     msg = self.format(record)
worker  |           ^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/logging/__init__.py", line 953, in format
worker  |     return fmt.format(record)
worker  |            ^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,443: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/utils/log.py", line 146, in format
worker  |     msg = super().format(record)
worker  |           ^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/logging/__init__.py", line 695, in format
worker  |     record.exc_text = self.formatException(record.exc_info)
worker  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/utils/log.py", line 142, in formatException
worker  |     r = super().formatException(ei)
worker  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/logging/__init__.py", line 645, in formatException
worker  |     traceback.print_exception(ei[0], ei[1], tb, None, sio)
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/traceback.py", line 124, in print_exception
worker  |     te = TracebackException(type(value), value, tb, limit=limit, compact=True)
worker  |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/traceback.py", line 728, in __init__
worker  |     self.stack = StackSummary._extract_from_extended_frame_gen(
worker  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/traceback.py", line 413, in _extract_from_extended_frame_gen
worker  |     for f, (lineno, end_lineno, colno, end_colno) in frame_gen:
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/traceback.py", line 350, in _walk_tb_with_full_positions
worker  |     positions = _get_code_position(tb.tb_frame.f_code, tb.tb_lasti)
worker  |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/traceback.py", line 363, in _get_code_position
worker  |     positions_gen = code.co_positions()
worker  |                     ^^^^^^^^^^^^^^^^^
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8] AttributeError: '_Code' object has no attribute 'co_positions'
worker  | [2024-03-15 14:03:17,444: WARNING/ForkPoolWorker-8] Call stack:
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/bin/celery", line 8, in <module>
worker  |     sys.exit(main())
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/__main__.py", line 15, in main
worker  |     sys.exit(_main())
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/bin/celery.py", line 217, in main
worker  |     return celery(auto_envvar_prefix="CELERY")
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
worker  |     return self.main(*args, **kwargs)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1078, in main
worker  |     rv = self.invoke(ctx)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
worker  |     return _process_result(sub_ctx.command.invoke(sub_ctx))
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
worker  |     return ctx.invoke(self.callback, **ctx.params)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 783, in invoke
worker  |     return __callback(*args, **kwargs)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
worker  |     return f(get_current_context(), *args, **kwargs)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/bin/base.py", line 134, in caller
worker  |     return f(ctx, *args, **kwargs)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/bin/worker.py", line 351, in worker
worker  |     worker.start()
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/worker/worker.py", line 203, in start
worker  |     self.blueprint.start(self)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/bootsteps.py", line 116, in start
worker  |     step.start(parent)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/bootsteps.py", line 365, in start
worker  |     return self.obj.start()
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/concurrency/base.py", line 129, in start
worker  |     self.on_start()
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/concurrency/prefork.py", line 109, in on_start
worker  |     P = self._pool = Pool(processes=self.limit,
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/concurrency/asynpool.py", line 463, in __init__
worker  |     super().__init__(processes, *args, **kwargs)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/pool.py", line 1046, in __init__
worker  |     self._create_worker_process(i)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/concurrency/asynpool.py", line 480, in _create_worker_process
worker  |     return super()._create_worker_process(i)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/pool.py", line 1158, in _create_worker_process
worker  |     w.start()
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/process.py", line 124, in start
worker  |     self._popen = self._Popen(self)
worker  | [2024-03-15 14:03:17,449: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/context.py", line 333, in _Popen
worker  |     return Popen(process_obj)
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/popen_fork.py", line 24, in __init__
worker  |     self._launch(process_obj)
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/popen_fork.py", line 79, in _launch
worker  |     code = process_obj._bootstrap()
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/process.py", line 327, in _bootstrap
worker  |     self.run()
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/process.py", line 114, in run
worker  |     self._target(*self._args, **self._kwargs)
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/pool.py", line 292, in __call__
worker  |     sys.exit(self.workloop(pid=pid))
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/billiard/pool.py", line 362, in workloop
worker  |     result = (True, prepare_result(fun(*args, **kwargs)))
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 649, in fast_trace_task
worker  |     R, I, T, Rstr = tasks[task].__trace__(
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 468, in trace_task
worker  |     I, R, state, retval = on_error(task_request, exc, uuid)
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 379, in on_error
worker  |     R = I.handle_error_state(
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 178, in handle_error_state
worker  |     return {
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 237, in handle_failure
worker  |     self._log_error(task, req, einfo)
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8]   File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 265, in _log_error
worker  |     logger.log(policy.severity, policy.format.strip(), context,
worker  | [2024-03-15 14:03:17,450: WARNING/ForkPoolWorker-8] Message: 'Task %(name)s[%(id)s] %(description)s: %(exc)s'
worker  | Arguments: {'hostname': 'celery@e1ea41f18099', 'id': 'b410192b-41a7-4d30-9b70-7aa094756017', 'name': 'background_upload', 'exc': 'TypeError("background_upload() missing 1 required positional argument: \'params\'")', 'traceback': 'Traceback (most recent call last):\n  File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 451, in trace_task\n    R = retval = fun(*args, **kwargs)\n                 ^^^^^^^^^^^^^^^^^^^^\n  File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 734, in __protected_call__\n    return self.run(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\nTypeError: background_upload() missing 1 required positional argument: \'params\'\n', 'args': '[\'https://dne-t-bbb-dev-scalelite.ext.arawa.fr/bigbluebutton/api/insertDocument?meetingID=meeting-persistent-1--b6c6b057709667ff755b5fe345a9ed200eee3c15&checksum=ca052fb1ebb598aa63a4cd8e67d8971c48e19b49\', "<?xml version=\'1.0\' encoding=\'UTF-8\'?> <modules>  <module name=\'presentation\'>  </module></modules>"]', 'kwargs': '{}', 'description': 'raised unexpected', 'internal': False}

Je pense comprendre d'où vient l’erreur que j'observe : il faut bien redémarrer le conteneur celery lorsqu'on change de version de code.

@BHoury c'est visiblement du au worker qui utilise une mauvaise version du code. Pour corriger le problème on peut purger le cache du code python avant de reconstruire l'image du worker:

  • docker compose down
  • find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | sudo xargs rm -rf
  • docker compose build
  • docker compose up