Служба Artifactory «Access» не запускается после обновления 7.90.5, миграция БД не удалась (дерби)

В примечаниях к выпуску 7.90.5 объясняется, как служба доступа теперь работает в отдельной JVM.

При использовании базы данных дерби вся база данных копируется в $JFROG_HOME/artifactory/var/data/access/derby.

Я вручную установил конфигурацию базы данных для службы доступа, в противном случае она попыталась открыть ту же самую базу данных, что и искусственный процесс JVM, но это не удалось (несколько JVM, обращающихся к одной базе данных derby, не разрешены). Вот system.yaml:

shared:
    database:
        allowNonPostgresql: true
        type: derby
        driver: org.apache.derby.jdbc.EmbeddedDriver
        url: jdbc:derby:/opt/jfrog/artifactory/var/data/artifactory/derby;create=true
    user: artifactory
    extraJavaOpts: -Xss256k -Dkeystore.pkcs12.keyProtectionAlgorithm=PBEWithHmacSHA256AndAES_256
artifactory:
    port: 8081
    tomcat:
        connector:
            maxThreads: 200
            sendReasonPhrase: true
access:
    http:
        port: 8040
    database:
        type: derby
        driver: org.apache.derby.jdbc.EmbeddedDriver
        url: jdbc:derby:/opt/jfrog/artifactory/var/data/access/derby;create=true
    tomcat:
        connector:
            maxThreads: 50
            sendReasonPhrase: true

При запуске миграции применяются к новой копии базы данных. Этот процесс терпит неудачу.

Подробности от access-service.log:

2024-08-01T02:15:30.606Z [jfac ] [INFO ] [fa1259ae7c93acf5] [licationContextInitializer:165] [main                ] - Access (jfac) service initialization started. Version: 7.112.5 Revision: 81205900 PID: 14967 Home: /opt/jfrog/artifactory
2024-08-01T02:15:30.954Z [jfac ] [INFO ] [fa1259ae7c93acf5] [o.j.a.AccessApplication:55    ] [main                ] - Starting AccessApplication v7.112.5 using Java 17.0.10 on ip-172-31-10-237 with PID 14967 (/opt/jfrog/artifactory/app/access/tomcat/webapps/access/WEB-INF/lib/access-application-7.112.5.jar started by artifactory in /)
2024-08-01T02:15:30.955Z [jfac ] [INFO ] [fa1259ae7c93acf5] [o.j.a.AccessApplication:632   ] [main                ] - No active profile set, falling back to 1 default profile: "default"
2024-08-01T02:15:53.819Z [jfac ] [ERROR] [fa1259ae7c93acf5] [o.f.c.i.c.DbMigrate:294       ] [main                ] - Migration of schema "APP" to version 7.42 - Alter and remove index access tokens table failed! Changes successfully rolled back.
2024-08-01T02:15:53.839Z [jfac ] [ERROR] [fa1259ae7c93acf5] [.s.d.u.AccessJdbcHelperImpl:81] [main                ] - Could not initialize database:
org.flywaydb.core.internal.dbsupport.FlywaySqlScriptException:
Migration V7_42__Alter_and_remove_index_access_tokens_table.sql failed
----------------------------------------------------------------------
SQL State  : XSAI2
Error Code : 20000
Message    : The conglomerate (5,217) requested does not exist.
Location   : db/derby/migration/V7_42__Alter_and_remove_index_access_tokens_table.sql (/file:/opt/jfrog/artifactory/app/access/tomcat/webapps/access/WEB-INF/lib/access-server-core-7.112.5.jar!/db/derby/migration/V7_42__Alter_and_remove_index_access_tokens_table.sql)
Line       : 1
Statement  : DROP INDEX access_username_idx

IIUC индекс, который пытается удалить миграция, не существует.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку это обновление, сценарий запуска Artifactory 7.90.5 должен идентифицировать базу данных Derby и скопировать ее в новое место, доступное для службы Access.

Судя по опубликованным вами журналам, похоже, что Access пытается запуститься с пустой базой данных.

  1. Остановить службы Artifactory и Access
  2. Пожалуйста, удалите контент /opt/jfrog/artifactory/var/data/access/derby
  3. Удалите create=true из shared.database.url и shared.access.url.
  4. Запустить Артифабрику

Другой вариант — скопировать содержимое из /opt/jfrog/artifactory/var/data/artifactory/derby в /opt/jfrog/artifactory/var/data/access/derby перед запуском Artifactory.

Если проблема не устранена, укажите тип установки, точную команду, использованную для запуска Artifactory, и версию Artifactory, которая у вас была до обновления.

Спасибо!

Спасибо за ваш ответ! Скрипт запуска правильно создал копию базы данных, она не пустая. Я попробовал еще раз, удалив access/derby и позволив сценарию создать новую копию, получил ту же ошибку. Затем я удалил access/derby и создал копию вручную (sudo rsync -a ./derby ./access), также получил ту же ошибку. Система — Debian 9 (работает над обновлением), артефакт установлен с помощью apt из jfrog.bintray.com/artifactory-debs, запускается с помощью systemd (artifactoryManage.sh start). Предыдущая версия была 7.21.12.

Lukas Rytz 02.08.2024 09:45

Спасибо! Да, я столкнулся с этим, как только запустил службу доступа (мне удалось воссоздать базу данных с нуля и переместить данные). Тем временем я обновил Debian до 10, так что он снова доступен. Спасибо за вашу поддержку!

Lukas Rytz 04.08.2024 17:04
Ответ принят как подходящий

Похоже, база данных derby повреждена, возможно, из-за нехватки места на диске во время обновления.

Я использовал ij для подключения к нему и запускал select count(*) from TABLE для каждой таблицы. Это не удалось для двух таблиц (с остальными сработало):

ij> select count(*) from ACCESS_PERMISSION_ACTION;
ERROR XSAI2: The conglomerate (3,441) requested does not exist.

ij> select count(*) from ACCESS_TOKENS;
ERROR XSAI2: The conglomerate (5,217) requested does not exist.

ij> select count(*) from BINARIES;
1
-----------
252130

1 row selected

Эта ошибка, похоже, указывает на поврежденную базу данных (Ошибка Apache derby db «Запрошенный конгломерат (1.744) не существует»).

Другие вопросы по теме

Похожие вопросы

Супер странное поведение Helm/Jenkins/Artifactory YAML
Azure DevOps — ошибка JFrogNuget — произошла ошибка при выполнении задачи: ошибка: команда не выполнена
Artifactory OSS не запускается, в журнале отображается «Не удалось выполнить GetEntitlements, сервер ответил недопустимым статусом 404 НЕВНЕДРЕНО»
После обновления до 7.84.14 Artifactory возвращает 400 при загрузке артефакта, который не находится на самом внешнем уровне репозитория
Установка JFrog в Azure DevOps с несколькими серверами сборки
Как перечислить все папки с более чем 10 артефактами в репозитории артефактов с помощью CURL?
Использование Jfrog для создания и обновления сборки с помощью образов докеров, соответствующих среде. (разработка|постановка|продюсирование)
Любой способ Конана автоматически загрузить пакет в артефакт, ЕСЛИ он был только что собран с --build=missing
Artifactory не запускается после обновления — «необходимые службы узла отсутствуют или неработоспособны» и другие ошибки
Дженкинс зависает при развертывании больших файлов в Artifactory