Проблема с Pulp: невозможно скопировать репозиторий Oracle Linux yum после загрузки с Oracle
У нас были проблемы с использованием репозиториев Oracle Linux yum для Oracle Linux 7 с Pulp. (Я говорю об этой целлюлозе , а не о PuLP). Мы использовали старую версию Pulp, 2.17.1, но после того, как у нас возникли проблемы, мы обновились до Pulp 2.21.5. Мы используем to Pulp для кеширования репозиториев yum, оба из которых делают снимки, поэтому мы можем гарантировать состояние репо при построении системы, а также иметь локальный источник в нашей собственной сети.
Мы делаем снимки этих двух репозиториев Oracle Linux: https://yum.oracle.com/repo/OracleLinux/OL7/ необязательный / последний / x86_64 / index.html
Мы «синхронизируем» эти репозитории с Pulp с помощью команд «pulp-admin rpm repo sync» и «pulp-admin rpm repo publish». Обе эти задачи Pulp выполняются успешно. Однако после выполнения этого шага я могу заметить, что если я попытаюсь просмотреть содержимое репозитория с помощью команды «pulp-admin rpm repo content rpm --repo-id oraclelinux7-base», я получаю внутреннюю ошибку от Pulp.
$ sudo pulp-admin rpm repo content rpm --repo-id oraclelinux7-base
There was an internal server error while trying to access the Pulp application.
One possible cause is that the database needs to be migrated to the latest
version. If this is the case, run pulp-manage-db and restart the services. More
information may be found in Apache's log.
Оба репозитория, «последний» и «необязательный», демонстрируют один и тот же симптом.
Затем, как правило, мы копируем содержимое наших репозиториев Pulp в «снимок», чтобы сохранить состояние репо на момент его обновления. Это сделано для того, чтобы мы могли закрепить определенный набор обновлений в среде перед обновлением и отслеживать изменения. Чтобы сделать снимок, у нас есть сценарий, который запускает команду pulp-admin для создания нового репо для снимка, затем использует «pulp-admin rpm repo copy all», чтобы скопировать синхронизированное базовое репо в репозиторий снимков, и, наконец, мы запустите задачу публикации снимка. Вот где возникает проблема.
«Необязательно» позволяет создавать снимки без проблем, несмотря на ошибку, описанную выше. Но когда я создаю моментальный снимок «последний», возникает ошибка, которая убивает работника Pulp и оставляет задачу «ассоциированный» в состоянии «выполнение» на неопределенное время.
Вот пример журнала из journalctl:
Jun 25 13:49:15 amerpulp-01-iae pulp[16103]: celery.app.trace:INFO: [ad8688b3] Task pulp.server.controllers.repository.download_deferred[ad8688b3-c715-4971-9c7e-0f15738011ab] succeeded in 0.0740167059994s: None
Jun 25 13:49:15 amerpulp-01-iae pulp[18122]: pulp.server.db.connection:INFO: Attempting to connect to localhost
Jun 25 13:49:15 amerpulp-01-iae pulp[18122]: pulp.server.db.connection:INFO: Attempting to connect to localhost
Jun 25 13:49:15 amerpulp-01-iae pulp[18122]: pulp.server.db.connection:INFO: Write concern for Mongo connection: {}
Jun 25 13:52:22 amerpulp-01-iae pulp[17067]: kombu.transport.qpid:INFO: Connected to qpid with SASL mechanism PLAIN
Jun 25 13:52:22 amerpulp-01-iae pulp[1188]: celery.worker.strategy:INFO: Received task: pulp.server.async.tasks._queue_reserved_task[b846c919-0277-4a2f-afdd-c3b437bc278e]
Jun 25 13:52:22 amerpulp-01-iae pulp[1239]: celery.worker.strategy:INFO: Received task: pulp.server.managers.repo.unit_association.associate_from_repo[d1485c84-0e53-40ec-9c23-9507900b2fe0]
Jun 25 13:52:22 amerpulp-01-iae pulp[1239]: celery.worker.strategy:INFO: Received task: pulp.server.async.tasks._release_resource[72b440fc-04bd-49b4-a594-7a4cf7e77780]
Jun 25 13:52:22 amerpulp-01-iae pulp[1458]: celery.app.trace:INFO: [b846c919] Task pulp.server.async.tasks._queue_reserved_task[b846c919-0277-4a2f-afdd-c3b437bc278e] succeeded in 0.0275188770029s: None
Jun 25 14:00:47 amerpulp-01-iae pulp[1239]: pulp.server.async.worker_watcher:WARNING: Worker reserved_resource_worker-1@amerpulp-01-iae heartbeat time 74.552641s exceeds heartbeat interval. Consider adjusting the worker_timeout setting.
Jun 25 14:00:47 amerpulp-01-iae pulp[1188]: pulp.server.async.worker_watcher:WARNING: Worker resource_manager@amerpulp-01-iae heartbeat time 32.787201s exceeds heartbeat interval. Consider adjusting the worker_timeout setting.
Jun 25 14:00:47 amerpulp-01-iae pulp[1236]: pulp.server.async.worker_watcher:WARNING: Worker reserved_resource_worker-0@amerpulp-01-iae heartbeat time 74.560998s exceeds heartbeat interval. Consider adjusting the worker_timeout setting.
Jun 25 14:00:48 amerpulp-01-iae pulp[1239]: celery.worker.request:ERROR: (1239-47616) Task handler raised error: WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',)
Jun 25 14:00:48 amerpulp-01-iae pulp[1239]: celery.worker.request:ERROR: (1239-47616) Traceback (most recent call last):
Jun 25 14:00:48 amerpulp-01-iae pulp[1239]: celery.worker.request:ERROR: (1239-47616) File "/usr/lib64/python2.7/site-packages/billiard/pool.py", line 1223, in mark_as_worker_lost
Jun 25 14:00:48 amerpulp-01-iae pulp[1239]: celery.worker.request:ERROR: (1239-47616) human_status(exitcode)),
Jun 25 14:00:48 amerpulp-01-iae pulp[1239]: celery.worker.request:ERROR: (1239-47616) WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL).
Jun 25 14:00:48 amerpulp-01-iae pulp[18964]: pulp.server.db.connection:INFO: Attempting to connect to localhost
Jun 25 14:00:48 amerpulp-01-iae pulp[18964]: pulp.server.db.connection:INFO: Attempting to connect to localhost
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: pulp.server.db.connection:INFO: Write concern for Mongo connection: {}
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: py.warnings:WARNING: [72b440fc] (18964-47616) /usr/lib64/python2.7/site-packages/pymongo/topology.py:74: UserWarning: MongoClient opened before fork. Create MongoClient with connect=False, or create client after forking. See PyMongo's documentation for detail
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: py.warnings:WARNING: [72b440fc] (18964-47616) "MongoClient opened before fork. Create MongoClient "
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: py.warnings:WARNING: [72b440fc] (18964-47616)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: pulp.server.async.tasks:INFO: [72b440fc] Task failed : [d1485c84-0e53-40ec-9c23-9507900b2fe0] : Worker terminated abnormally while processing task d1485c84-0e53-40ec-9c23-9507900b2fe0. Check the logs for details
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) Task pulp.server.async.tasks._release_resource[72b440fc-04bd-49b4-a594-7a4cf7e77780] raised unexpected: UnboundLocalError("local variable 'original_formatted_traceback' referenced before assignment",)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) Traceback (most recent call last):
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) File "/usr/lib/python2.7/site-packages/celery/app/trace.py", line 367, in trace_task
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) R = retval = fun(*args, **kwargs)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) File "/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py", line 110, in __call__
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) return super(PulpTask, self).__call__(*args, **kwargs)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) File "/usr/lib/python2.7/site-packages/celery/app/trace.py", line 622, in __protected_call__
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) return self.run(*args, **kwargs)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) File "/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py", line 378, in _release_resource
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) new_task.on_failure(exception, task_id, (), {}, MyEinfo)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) File "/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py", line 781, in on_failure
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) _logger.debug(original_formatted_traceback)
Jun 25 14:00:49 amerpulp-01-iae pulp[18964]: celery.app.trace:ERROR: [72b440fc] (18964-47616) UnboundLocalError: local variable 'original_formatted_traceback' referenced before assignment
Jun 25 14:00:53 amerpulp-01-iae pulp[1178]: pulp.server.async.scheduler:ERROR: Worker 'scheduler@amerpulp-01-iae' has gone missing, removing from list of workers
Jun 25 14:00:53 amerpulp-01-iae pulp[1178]: pulp.server.async.scheduler:ERROR: There are 0 pulp_celerybeat processes running. Pulp will not operate correctly without at least one pulp_celerybeat process running.
Jun 25 14:00:53 amerpulp-01-iae pulp[1178]: pulp.server.async.worker_watcher:INFO: New worker 'scheduler@amerpulp-01-iae' discovered
В 14:00:48 процесс 1239 преждевременно завершил работу целлюлозно-бумажного работника во время выполнения задачи.
Что я могу сделать, чтобы исправить это? Почему это происходит только с https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.htmlhttps://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html ? (В качестве теста я попробовал то же самое с «архивным» репозиторием Oracle, который, кажется, имеет те же пакеты, что и «последний», и достиг тех же результатов. Я также попытался перестроить наш сервер Pulp без снимков и воспроизвести те же симптомы)
Большое вам спасибо за то, что прочитали это!