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
Ensure users can log in and out of different OLDs from Dative in prod.
This will probably require fixing the code referenced above so that it removes the bottom-level sub-directory name before appending the current OLD as the new sub-directory name.
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'
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 thelock_dir
path longer on each OLD authentication switch!Acceptance Criteria
Investigation
Logs: