[Docker] Upgrading from 4.28.0 --> 5.0.3 leads to permanent container restarts

Hi,

after spending some hours I was able to migrate my CE installation from 4.27.1 (native) to 4.28.0 (Docker). I thought the upgrade from that point to 5.0.3 should be pretty straight forward, but unfortunately it killed everything.

After the upgrade the containers “rc_cluster_apps-celery-1”, "rc_cluster_apps-celery-beat-1 " and "rc_cluster_apps-rhodecode-1 " are in a permanent restart loop. I followed the docs for upgrading and have no clue what went wrong here (did not see any error message during the upgrade as well).

Unfortunately I missed creating a snapshot after the migration to Docker 4.28.0, because I thought the next step will be a small and easy one. Hoping for a solution to fix that, otherwise I need to start more or less from scratch :pleading_face:

Log:

rhodecode-1    |
rhodecode-1    | sent 18,773 bytes  received 265 bytes  38,076.00 bytes/sec
rhodecode-1    | total size is 9,017,239  speedup is 473.64
rhodecode-1    | Found DB_UPGRADE flag, running DB upgrade
rhodecode-1    | ENTRYPOINT: Upgrading database.
rhodecode-1    | {"timestamp": "2024-06-26T18:22:52.584236+00:00", "levelname": "INFO", "name": "rhodecode.config.middleware", "message": "Pyramid app config starting", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:52.584524+00:00", "levelname": "INFO", "name": "rhodecode.config.settings_maker", "message": "logging configuration based on main .ini file", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:52.624738+00:00", "levelname": "INFO", "name": "rhodecode.model", "message": "RhodeCode 5.0.3 initializing db for postgresql://rhodecode:***@database/rhodecode", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:52.625602+00:00", "levelname": "INFO", "name": "rhodecode.config.environment", "message": "Enabled VCS backends: odict_keys(['hg', 'git', 'svn'])", "req_id": "00000000-0000-0000-0000-000000000000"}
celery-beat-1 exited with code 1
rhodecode-1    | {"timestamp": "2024-06-26T18:22:56.021673+00:00", "levelname": "INFO", "name": "celery.rhodecode.loader", "message": "Configuring celery based on `{'broker_url': 'redis://redis:6379/8',
'result_backend': 'redis://redis:6379/8', 'max_tasks_per_child': 20, 'task_always_eager': False}` settings", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:56.023704+00:00", "levelname": "INFO", "name": "rhodecode.config.middleware", "message": "Pyramid app created and configured in 3.44s", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:56.025763+00:00", "levelname": "INFO", "name": "rhodecode.model", "message": "RhodeCode 5.0.3 initializing db for postgresql://rhodecode:***@database/rhodecode", "req_id": "c6cffb6d-a619-4967-8613-90bc9ce35c82"}
rhodecode-1    | /home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py:13: RemovedIn20Warning: Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. To prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to "sqlalchemy<2.0". Set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings.  Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message. (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
rhodecode-1    |   from sqlalchemy.databases import sqlite as sa_base
rhodecode-1    | 2024-06-26 18:22:56,088 INFO sqlalchemy.engine.Engine select pg_catalog.version()
rhodecode-1    | 2024-06-26 18:22:56,090 INFO sqlalchemy.engine.Engine [raw sql] {}
rhodecode-1    | 2024-06-26 18:22:56,092 INFO sqlalchemy.engine.Engine select current_schema()
rhodecode-1    | 2024-06-26 18:22:56,092 INFO sqlalchemy.engine.Engine [raw sql] {}
rhodecode-1    | 2024-06-26 18:22:56,093 INFO sqlalchemy.engine.Engine show standard_conforming_strings
rhodecode-1    | 2024-06-26 18:22:56,093 INFO sqlalchemy.engine.Engine [raw sql] {}
rhodecode-1    | 2024-06-26 18:22:56,095 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT c.oid
rhodecode-1    |             FROM pg_catalog.pg_class c
rhodecode-1    |             LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
rhodecode-1    |             WHERE (pg_catalog.pg_table_is_visible(c.oid))
rhodecode-1    |             AND c.relname = %(table_name)s AND c.relkind in
rhodecode-1    |             ('r', 'v', 'm', 'f', 'p')
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,095 INFO sqlalchemy.engine.Engine [generated in 0.00027s] {'table_name': 'db_migrate_version'}
rhodecode-1    | 2024-06-26 18:22:56,098 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT a.attname,
rhodecode-1    |               pg_catalog.format_type(a.atttypid, a.atttypmod),
rhodecode-1    |               (
rhodecode-1    |                 SELECT pg_catalog.pg_get_expr(d.adbin, d.adrelid)
rhodecode-1    |                 FROM pg_catalog.pg_attrdef d
rhodecode-1    |                 WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum
rhodecode-1    |                 AND a.atthasdef
rhodecode-1    |               ) AS DEFAULT,
rhodecode-1    |               a.attnotnull,
rhodecode-1    |               a.attrelid as table_oid,
rhodecode-1    |               pgd.description as comment,
rhodecode-1    |               a.attgenerated as generated,
rhodecode-1    |                               (SELECT json_build_object(
rhodecode-1    |                     'always', a.attidentity = 'a',
rhodecode-1    |                     'start', s.seqstart,
rhodecode-1    |                     'increment', s.seqincrement,
rhodecode-1    |                     'minvalue', s.seqmin,
rhodecode-1    |                     'maxvalue', s.seqmax,
rhodecode-1    |                     'cache', s.seqcache,
rhodecode-1    |                     'cycle', s.seqcycle)
rhodecode-1    |                 FROM pg_catalog.pg_sequence s
rhodecode-1    |                 JOIN pg_catalog.pg_class c on s.seqrelid = c."oid"
rhodecode-1    |                 WHERE c.relkind = 'S'
rhodecode-1    |                 AND a.attidentity != ''
rhodecode-1    |                 AND s.seqrelid = pg_catalog.pg_get_serial_sequence(
rhodecode-1    |                     a.attrelid::regclass::text, a.attname
rhodecode-1    |                 )::regclass::oid
rhodecode-1    |                 ) as identity_options
rhodecode-1    |             FROM pg_catalog.pg_attribute a
rhodecode-1    |             LEFT JOIN pg_catalog.pg_description pgd ON (
rhodecode-1    |                 pgd.objoid = a.attrelid AND pgd.objsubid = a.attnum)
rhodecode-1    |             WHERE a.attrelid = %(table_oid)s
rhodecode-1    |             AND a.attnum > 0 AND NOT a.attisdropped
rhodecode-1    |             ORDER BY a.attnum
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,098 INFO sqlalchemy.engine.Engine [generated in 0.00019s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,103 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT t.typname as "name",
rhodecode-1    |                pg_catalog.format_type(t.typbasetype, t.typtypmod) as "attype",
rhodecode-1    |                not t.typnotnull as "nullable",
rhodecode-1    |                t.typdefault as "default",
rhodecode-1    |                pg_catalog.pg_type_is_visible(t.oid) as "visible",
rhodecode-1    |                n.nspname as "schema"
rhodecode-1    |             FROM pg_catalog.pg_type t
rhodecode-1    |                LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
rhodecode-1    |             WHERE t.typtype = 'd'
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,103 INFO sqlalchemy.engine.Engine [generated in 0.00018s] {}
rhodecode-1    | 2024-06-26 18:22:56,105 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT t.typname as "name",
rhodecode-1    |                -- no enum defaults in 8.4 at least
rhodecode-1    |                -- t.typdefault as "default",
rhodecode-1    |                pg_catalog.pg_type_is_visible(t.oid) as "visible",
rhodecode-1    |                n.nspname as "schema",
rhodecode-1    |                e.enumlabel as "label"
rhodecode-1    |             FROM pg_catalog.pg_type t
rhodecode-1    |                  LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
rhodecode-1    |                  LEFT JOIN pg_catalog.pg_enum e ON t.oid = e.enumtypid
rhodecode-1    |             WHERE t.typtype = 'e'
rhodecode-1    |         ORDER BY "schema", "name", e.oid
rhodecode-1    | 2024-06-26 18:22:56,105 INFO sqlalchemy.engine.Engine [generated in 0.00014s] {}
rhodecode-1    | 2024-06-26 18:22:56,108 INFO sqlalchemy.engine.Engine
rhodecode-1    |                 SELECT a.attname
rhodecode-1    |                 FROM pg_attribute a JOIN (
rhodecode-1    |                     SELECT unnest(ix.indkey) attnum,
rhodecode-1    |                            generate_subscripts(ix.indkey, 1) ord
rhodecode-1    |                     FROM pg_index ix
rhodecode-1    |                     WHERE ix.indrelid = %(table_oid)s AND ix.indisprimary
rhodecode-1    |                     ) k ON a.attnum=k.attnum
rhodecode-1    |                 WHERE a.attrelid = %(table_oid)s
rhodecode-1    |                 ORDER BY k.ord
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,108 INFO sqlalchemy.engine.Engine [generated in 0.00015s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,110 INFO sqlalchemy.engine.Engine
rhodecode-1    |         SELECT conname
rhodecode-1    |            FROM  pg_catalog.pg_constraint r
rhodecode-1    |            WHERE r.conrelid = %(table_oid)s AND r.contype = 'p'
rhodecode-1    |            ORDER BY 1
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,110 INFO sqlalchemy.engine.Engine [generated in 0.00013s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,113 INFO sqlalchemy.engine.Engine
rhodecode-1    |           SELECT r.conname,
rhodecode-1    |                 pg_catalog.pg_get_constraintdef(r.oid, true) as condef,
rhodecode-1    |                 n.nspname as conschema
rhodecode-1    |           FROM  pg_catalog.pg_constraint r,
rhodecode-1    |                 pg_namespace n,
rhodecode-1    |                 pg_class c
rhodecode-1    |
rhodecode-1    |           WHERE r.conrelid = %(table)s AND
rhodecode-1    |                 r.contype = 'f' AND
rhodecode-1    |                 c.oid = confrelid AND
rhodecode-1    |                 n.oid = c.relnamespace
rhodecode-1    |           ORDER BY 1
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,113 INFO sqlalchemy.engine.Engine [generated in 0.00017s] {'table': 16408}
rhodecode-1    | 2024-06-26 18:22:56,115 INFO sqlalchemy.engine.Engine
rhodecode-1    |               SELECT
rhodecode-1    |                   i.relname as relname,
rhodecode-1    |                   ix.indisunique, ix.indexprs,
rhodecode-1    |                   a.attname, a.attnum, c.conrelid, ix.indkey::varchar,
rhodecode-1    |                   ix.indoption::varchar, i.reloptions, am.amname,
rhodecode-1    |                   pg_get_expr(ix.indpred, ix.indrelid),
rhodecode-1    |                   ix.indnkeyatts as indnkeyatts
rhodecode-1    |               FROM
rhodecode-1    |                   pg_class t
rhodecode-1    |                         join pg_index ix on t.oid = ix.indrelid
rhodecode-1    |                         join pg_class i on i.oid = ix.indexrelid
rhodecode-1    |                         left outer join
rhodecode-1    |                             pg_attribute a
rhodecode-1    |                             on t.oid = a.attrelid and a.attnum = ANY(ix.indkey)
rhodecode-1    |                         left outer join
rhodecode-1    |                             pg_constraint c
rhodecode-1    |                             on (ix.indrelid = c.conrelid and
rhodecode-1    |                                 ix.indexrelid = c.conindid and
rhodecode-1    |                                 c.contype in ('p', 'u', 'x'))
rhodecode-1    |                         left outer join
rhodecode-1    |                             pg_am am
rhodecode-1    |                             on i.relam = am.oid
rhodecode-1    |               WHERE
rhodecode-1    |                   t.relkind IN ('r', 'v', 'f', 'm', 'p')
rhodecode-1    |                   and t.oid = %(table_oid)s
rhodecode-1    |                   and ix.indisprimary = 'f'
rhodecode-1    |               ORDER BY
rhodecode-1    |                   t.relname,
rhodecode-1    |                   i.relname
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,116 INFO sqlalchemy.engine.Engine [generated in 0.00017s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,120 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT
rhodecode-1    |                 cons.conname as name,
rhodecode-1    |                 cons.conkey as key,
rhodecode-1    |                 a.attnum as col_num,
rhodecode-1    |                 a.attname as col_name
rhodecode-1    |             FROM
rhodecode-1    |                 pg_catalog.pg_constraint cons
rhodecode-1    |                 join pg_attribute a
rhodecode-1    |                   on cons.conrelid = a.attrelid AND
rhodecode-1    |                     a.attnum = ANY(cons.conkey)
rhodecode-1    |             WHERE
rhodecode-1    |                 cons.conrelid = %(table_oid)s AND
rhodecode-1    |                 cons.contype = 'u'
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,121 INFO sqlalchemy.engine.Engine [generated in 0.00016s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,122 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT
rhodecode-1    |                 cons.conname as name,
rhodecode-1    |                 pg_get_constraintdef(cons.oid) as src
rhodecode-1    |             FROM
rhodecode-1    |                 pg_catalog.pg_constraint cons
rhodecode-1    |             WHERE
rhodecode-1    |                 cons.conrelid = %(table_oid)s AND
rhodecode-1    |                 cons.contype = 'c'
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,122 INFO sqlalchemy.engine.Engine [generated in 0.00014s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,124 INFO sqlalchemy.engine.Engine
rhodecode-1    |             SELECT
rhodecode-1    |                 pgd.description as table_comment
rhodecode-1    |             FROM
rhodecode-1    |                 pg_catalog.pg_description pgd
rhodecode-1    |             WHERE
rhodecode-1    |                 pgd.objsubid = 0 AND
rhodecode-1    |                 pgd.objoid = %(table_oid)s
rhodecode-1    |
rhodecode-1    | 2024-06-26 18:22:56,124 INFO sqlalchemy.engine.Engine [generated in 0.00013s] {'table_oid': 16408}
rhodecode-1    | 2024-06-26 18:22:56,126 INFO sqlalchemy.engine.Engine SELECT db_migrate_version.repository_id, db_migrate_version.repository_path, db_migrate_version.version
rhodecode-1    | FROM db_migrate_version
rhodecode-1    | WHERE db_migrate_version.repository_id = %(repository_id_1)s
rhodecode-1    | 2024-06-26 18:22:56,126 INFO sqlalchemy.engine.Engine [generated in 0.00013s] {'repository_id_1': 'rhodecode_db_migrations'}
rhodecode-1    |
rhodecode-1    | ****************************************************************************
rhodecode-1    | *** FOUND CURRENT DATABASE DB_URI UNDER VERSION CONTROL WITH VERSION 114 ***
rhodecode-1    | ****************************************************************************
rhodecode-1    | {"timestamp": "2024-06-26T18:22:56.132577+00:00", "levelname": "INFO", "name": "rhodecode.lib.db_manage", "message": "This database is already at the newest version", "req_id": "c6cffb6d-a619-4967-8613-90bc9ce35c82"}
rhodecode-1    | 2024-06-26 18:22:56 [26] [INFO] Starting gunicorn 21.2.0
rhodecode-1    | 2024-06-26 18:22:56 [26] [INFO] Server gunicorn-rhodecode-1 [('0.0.0.0', 10020)] is starting.
rhodecode-1    | 2024-06-26 18:22:56 [26] [INFO] Listening at: http://0.0.0.0:10020 (26)
rhodecode-1    | 2024-06-26 18:22:56 [26] [INFO] Using worker: sync
rhodecode-1    | 2024-06-26 18:22:56 [26] [INFO] Server <gunicorn.arbiter.Arbiter object at 0x7f521ad1c590> is ready. Spawning workers
rhodecode-1    | 2024-06-26 18:22:56 [27] [INFO] Booting worker with pid: 27
rhodecode-1    | 2024-06-26 18:22:56 [28] [INFO] Booting worker with pid: 28
rhodecode-1    | 2024-06-26 18:22:56 [27] [INFO] [27        ] WORKER spawned
rhodecode-1    | 2024-06-26 18:22:56 [28] [INFO] [28        ] WORKER spawned
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.267216+00:00", "levelname": "INFO", "name": "rhodecode.config.middleware", "message": "Pyramid app config starting", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.267569+00:00", "levelname": "INFO", "name": "rhodecode.config.settings_maker", "message": "logging configuration based on main .ini file", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.308681+00:00", "levelname": "INFO", "name": "rhodecode.model", "message": "RhodeCode 5.0.3 initializing db for postgresql://rhodecode:***@database/rhodecode", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.309543+00:00", "levelname": "INFO", "name": "rhodecode.config.environment", "message": "Enabled VCS backends: odict_keys(['hg', 'git', 'svn'])", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.328545+00:00", "levelname": "INFO", "name": "rhodecode.config.middleware", "message": "Pyramid app config starting", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.328951+00:00", "levelname": "INFO", "name": "rhodecode.config.settings_maker", "message": "logging configuration based on main .ini file", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.377664+00:00", "levelname": "INFO", "name": "rhodecode.model", "message": "RhodeCode 5.0.3 initializing db for postgresql://rhodecode:***@database/rhodecode", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | {"timestamp": "2024-06-26T18:22:58.379399+00:00", "levelname": "INFO", "name": "rhodecode.config.environment", "message": "Enabled VCS backends: odict_keys(['hg', 'git', 'svn'])", "req_id": "00000000-0000-0000-0000-000000000000"}
rhodecode-1    | 2024-06-26 18:22:58 [27] [ERROR] Exception in worker process
rhodecode-1    | Traceback (most recent call last):
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
rhodecode-1    |     worker.init_process()
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/workers/base.py", line 134, in init_process
rhodecode-1    |     self.load_wsgi()
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
rhodecode-1    |     self.wsgi = self.app.wsgi()
rhodecode-1    |                 ^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/base.py", line 67, in wsgi
rhodecode-1    |     self.callable = self.load()
rhodecode-1    |                     ^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 56, in load
rhodecode-1    |     return self.load_pasteapp()
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_pasteapp
rhodecode-1    |     return get_wsgi_app(self.app_uri, defaults=self.cfg.paste_global_conf)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/pasterapp.py", line 19, in get_wsgi_app
rhodecode-1    |     return loadapp(
rhodecode-1    |            ^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 246, in loadapp
rhodecode-1    |     return loadobj(APP, uri, name=name, **kw)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 271, in loadobj
rhodecode-1    |     return context.create()
rhodecode-1    |            ^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 738, in create
rhodecode-1    |     return self.object_type.invoke(self)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 136, in invoke
rhodecode-1    |     return fix_call(context.object, context.global_conf, **context.local_conf)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/util.py", line 61, in fix_call
rhodecode-1    |     val = callable(*args, **kw)
rhodecode-1    |           ^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/config/middleware.py", line 109, in make_pyramid_app
rhodecode-1    |     includeme(config)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/config/middleware.py", line 330, in includeme
rhodecode-1    |     config.include('rhodecode.lib.rc_cache.archive_cache')
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/pyramid/config/__init__.py", line 666, in include
rhodecode-1    |     c(configurator)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/lib/rc_cache/archive_cache.py", line 88, in includeme
rhodecode-1    |     get_archival_cache_store(settings)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/lib/rc_cache/archive_cache.py", line 74, in get_archival_cache_store
rhodecode-1    |     d_cache = diskcache.FanoutCache(
rhodecode-1    |               ^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/fanout.py", line 43, in __init__
rhodecode-1    |     self._shards = tuple(
rhodecode-1    |                    ^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/fanout.py", line 44, in <genexpr>
rhodecode-1    |     Cache(
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/core.py", line 478, in __init__
rhodecode-1    |     self.reset(key, value, update=False)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/core.py", line 2431, in reset
rhodecode-1    |     ((old_value,),) = sql(
rhodecode-1    |                       ^^^^
rhodecode-1    | sqlite3.OperationalError: attempt to write a readonly database
rhodecode-1    | 2024-06-26 18:22:58 [27] [INFO] Worker exiting (pid: 27)
rhodecode-1    | 2024-06-26 18:22:58 [27] [INFO] [27        ] worker exit
rhodecode-1    | 2024-06-26 18:22:58 [28] [ERROR] Exception in worker process
rhodecode-1    | Traceback (most recent call last):
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
rhodecode-1    |     worker.init_process()
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/workers/base.py", line 134, in init_process
rhodecode-1    |     self.load_wsgi()
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
rhodecode-1    |     self.wsgi = self.app.wsgi()
rhodecode-1    |                 ^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/base.py", line 67, in wsgi
rhodecode-1    |     self.callable = self.load()
rhodecode-1    |                     ^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 56, in load
rhodecode-1    |     return self.load_pasteapp()
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_pasteapp
rhodecode-1    |     return get_wsgi_app(self.app_uri, defaults=self.cfg.paste_global_conf)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/gunicorn/app/pasterapp.py", line 19, in get_wsgi_app
rhodecode-1    |     return loadapp(
rhodecode-1    |            ^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 246, in loadapp
rhodecode-1    |     return loadobj(APP, uri, name=name, **kw)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 271, in loadobj
rhodecode-1    |     return context.create()
rhodecode-1    |            ^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 738, in create
rhodecode-1    |     return self.object_type.invoke(self)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/loadwsgi.py", line 136, in invoke
rhodecode-1    |     return fix_call(context.object, context.global_conf, **context.local_conf)
rhodecode-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/paste/deploy/util.py", line 61, in fix_call
rhodecode-1    |     val = callable(*args, **kw)
rhodecode-1    |           ^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/config/middleware.py", line 109, in make_pyramid_app
rhodecode-1    |     includeme(config)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/config/middleware.py", line 330, in includeme
rhodecode-1    |     config.include('rhodecode.lib.rc_cache.archive_cache')
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/pyramid/config/__init__.py", line 666, in include
rhodecode-1    |     c(configurator)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/lib/rc_cache/archive_cache.py", line 88, in includeme
rhodecode-1    |     get_archival_cache_store(settings)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/rhodecode/lib/rc_cache/archive_cache.py", line 74, in get_archival_cache_store
rhodecode-1    |     d_cache = diskcache.FanoutCache(
rhodecode-1    |               ^^^^^^^^^^^^^^^^^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/fanout.py", line 43, in __init__
rhodecode-1    |     self._shards = tuple(
rhodecode-1    |                    ^^^^^^
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/fanout.py", line 44, in <genexpr>
rhodecode-1    |     Cache(
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/core.py", line 478, in __init__
rhodecode-1    |     self.reset(key, value, update=False)
rhodecode-1    |   File "/home/rhodecode/venv/lib/python3.11/site-packages/diskcache/core.py", line 2431, in reset
rhodecode-1    |     ((old_value,),) = sql(
rhodecode-1    |                       ^^^^
rhodecode-1    | sqlite3.OperationalError: attempt to write a readonly database
rhodecode-1    | 2024-06-26 18:22:58 [28] [INFO] Worker exiting (pid: 28)
rhodecode-1    | 2024-06-26 18:22:58 [28] [INFO] [28        ] worker exit
rhodecode-1    | 2024-06-26 18:22:58 [26] [ERROR] Worker (pid:27) exited with code 3
rhodecode-1    | 2024-06-26 18:22:58 [26] [INFO] [27        ] worker exit
rhodecode-1    | 2024-06-26 18:22:58 [26] [ERROR] Worker (pid:28) was sent SIGTERM!
rhodecode-1    | 2024-06-26 18:22:58 [26] [INFO] [28        ] worker child exit
rhodecode-1    | 2024-06-26 18:22:58 [26] [ERROR] Shutting down: Master
rhodecode-1    | 2024-06-26 18:22:58 [26] [ERROR] Reason: Worker failed to boot.
rhodecode-1 exited with code 3

Unfortunately the strict limitations do not allow to post the complete log, hope the relevant information is in here.

Hi !

what storage do you use for the configuration based on rhodecode.ini:

archive_cache.XXX

can you post the list of keys ? We found some NFS problems when this path is on NFS.

There’s 2 options

  • move the storage to non NFS drive
  • switch to beta container that has this solved

Hi,

; Default is $cache_dir/archive_cache if not set
archive_cache.store_dir = /var/opt/rhodecode_data/tarballcache

; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
archive_cache.cache_size_gb = 40

; By default cache uses sharding technique, this specifies how many shards are there
archive_cache.cache_shards = 4

It’s all at default and the file system is not NFS (it’s an Ubuntu host).

How can I switch to this “beta container”?

Please try setting 1 shard, and change the path to a different one, if this doesn’t help please do switch to beta as in the bottom instruction:

; Default is $cache_dir/archive_cache if not set
archive_cache.store_dir = /var/opt/rhodecode_data/tarballcache2

; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
archive_cache.cache_size_gb = 40

; By default cache uses sharding technique, this specifies how many shards are there
archive_cache.cache_shards = 1
./rcstack cli set-runtime-image beta
./rcstack stack all down
./rcstack stack up -d

@rhodecode-support The first solution (changing the dir name and shards) resolves the container restarts, containers are all stable now.

But nevertheless it presents the next after-upgrade-issue: The web UI simply reports “Bad Gateway” on the previous working port 443

Looks I’m having a hard one today :wink:

Update: Clearing the browser cache and the cookies for the site resolves the “Bad Gateway”. Seems like it’s working, will do more checks tomorrow.

@rhodecode-support Thanks for your late and fast support :blush::+1:t2:

1 Like

Marco, many thanks for being patient and pointing us the gaps in the documentation. Upgrade from Rh 4.x to 5.x and to rcstack deployment is a major leap.

We will extend docs on mentioned issues to ensure a smoother migration for RhodeCode community users and clients.

Let us know if you encounter any other problems so that we can help. Hope you enjoy RhodeCode, and thanks for being RhodeCode user and community member!

Regards, Artem

@dolobanko
Thank you for your warm words. Just migrating my private instance with the new knowledge :wink:

Another documentation issue:
In the migration doc it’s recommended to switch to image 4.28.0 first. But the command is wrong.

./rcstack cli set-image 4.28.0

does not work. It took me a while to find out that the correct command is:

./rcstack cli set-runtime-image 4.28.0

1 Like

Hi Marco,

We already checking it out, thanks for noticing!

Regards, Artem