dativebase / old-pyramid

Online Linguistic Database (OLD)
http://www.onlinelinguisticdatabase.org/
8 stars 1 forks source link

Problem: session lock directory grows until it breaks the OS filesystem API! #52

Closed jrwdunham closed 2 years ago

jrwdunham commented 2 years ago

Problem

If you try to log in and out of several different OLD instances, you will pretty quickly start receiving a 500 error HTTP response. Logs indicate that this is due to the lock_dir of the Beaker session library getting way too long. See below. Further analysis indicates that this part of the OLD code is to blame since it just keeps making the lock_dir path longer on each OLD authentication switch!

Acceptance Criteria

Investigation

Logs:

2022-01-26 07:34:40,600 ERROR [waitress:357][waitress] Exception while serving /nepali_umn_2019old/login/authenticate
Traceback (most recent call last):
  File "/venv/lib/python3.6/site-packages/waitress/channel.py", line 349, in service
    task.service()
  File "/venv/lib/python3.6/site-packages/waitress/task.py", line 169, in service
    self.execute()
  File "/venv/lib/python3.6/site-packages/waitress/task.py", line 439, in execute
    app_iter = self.channel.server.application(environ, start_response)
  File "/usr/src/old/old/__init__.py", line 123, in __call__
    return self.app(environ, custom_start_response)
  File "/venv/lib/python3.6/site-packages/pyramid/router.py", line 236, in __call__
    response = self.invoke_subrequest(request, use_tweens=True)
  File "/venv/lib/python3.6/site-packages/pyramid/router.py", line 214, in invoke_subrequest
    request._process_response_callbacks(response)
  File "/venv/lib/python3.6/site-packages/pyramid/request.py", line 92, in _process_response_callbacks
    callback(self, response)
  File "/venv/lib/python3.6/site-packages/pyramid_beaker/__init__.py", line 30, in session_callback
    self.persist()
  File "/venv/lib/python3.6/site-packages/beaker/session.py", line 875, in persist
    self._session().save()
  File "/venv/lib/python3.6/site-packages/beaker/session.py", line 505, in save
    **self.namespace_args)
  File "/venv/lib/python3.6/site-packages/beaker/ext/database.py", line 67, in __init__
    verify_directory(self.lock_dir)
  File "/venv/lib/python3.6/site-packages/beaker/util.py", line 90, in verify_directory
    os.makedirs(dir)
  File "/usr/lib/python3.6/os.py", line 210, in makedirs
    makedirs(head, mode, exist_ok)
  File "/usr/lib/python3.6/os.py", line 210, in makedirs
    makedirs(head, mode, exist_ok)
  File "/usr/lib/python3.6/os.py", line 210, in makedirs
    makedirs(head, mode, exist_ok)
  [Previous line repeated 13 more times]
  File "/usr/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
OSError: [Errno 36] File name too long: '/usr/src/old/data/sessions/lock/demo/demo2/demo/luaold/demo/run_mcgill_2022old/zgaold/kavonold/run_mcgill_2022old/igala2021old/mlgold/igala2021old/run_mcgill_2022old/luaold/run_mcgill_2022old/mlgold/cleftsold/luaold/run_mcgill_2022old/luaold/mlgold/luaold/igala2021old/run_mcgill_2022old/luaold/run_mcgill_2022old/cleftsold/kamold/kavonold/ojiold/run_mcgill_2022old/luaold/mlgold/run_mcgill_2022old/mlgold/run_mcgill_2022old/mlgold/luaold/cceold/maku1279old/mlgold/luaold/run_mcgill_2022old/maku1279old/run_mcgill_2022old/luaold/maku1279old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/merold/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/igala2021old/luaold/mlgold/kamold/mlgold/kamold/somold/mlgold/somold/mlgold/maku1279old/luaold/maku1279old/igala2021old/saudi_arabic/run_mcgill_2022old/igala2021old/saudi_arabic/igala2021old/run_mcgill_2022old/luaold/run_mcgill_2022old/maku1279old/luaold/maku1279old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/luaold/igala2021old/luaold/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/maku1279old/run_mcgill_2022old/maku1279old/run_mcgill_2022old/luaold/run_mcgill_2022old/mlgold/luaold/mlgold/run_mcgill_2022old/mlgold/luaold/run_mcgill_2022old/mlgold/hmnold/mlgold/hmnold/mlgold/hmnold/mlgold/run_mcgill_2022old/mlgold/run_mcgill_2022old/mlgold/run_mcgill_2022old/mlgold/run_mcgill_2022old/mlgold/run_mcgill_2022old/mlgold/luaold/mlgold/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/mlgold/run_mcgill_2022old/luaold/maku1279old/run_mcgill_2022old/saudi_arabic/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/maku1279old/run_mcgill_2022old/luaold/maku1279old/run_mcgill_2022old/maku1279old/run_mcgill_2022old/maku1279old/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/run_mcgill_2022old/igala2021old/saudi_arabic/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/maku1279old/thkold/runold/run_mcgill_2022old/runold/cggold/igala2021old/run_mcgill_2022old/luaold/run_mcgill_2022old/glk201old/basistestold/glk201old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/run_mcgill_2022old/luaold/glk201old/run_mcgill_2022old/cggold/run_mcgill_2022old/cggold/run_mcgill_2022old/blaold/tvuold/maku1279old/thkold/morold/okaold/runold/run_mcgill_2022old/luaold/run_mcgill_2022old/malagasy_mcgill_2020old/run_mcgill_2022old/luaold/run_mcgill_2022old'