Проблема: сервис не перезапускается
Ошибки:
java.lang.IllegalStateException: Could not find database table: db_propertiesartifactory
frontend is PID exists (29311), but frontend not running artifactory
Can’t open PID file /var/run/artifactory.pid (yet?) after start: No such file or directory
Решение:
1. остановить artifactory, отключив автоматический перезапуск
# systemctl stop artifactory.service
2. запросом вывести все java-процессы, связанные с томкат-сервером Artifactory
# ps -ef | grep java | grep artifactory | grep tomcat
3. остановить все найденные в шаге 2 процессы
kill -9 13868 kill -9 13869 kill -9 13998
4. Дождаться автоматического создания файла artifactory.pid в директории /var/run/
# cat /var/run/artifactory.pid 21519
5. Выполнить экспорт переменной ARTIFACTORY_PID
# export ARTIFACTORY_PID=/var/run/artifactory.pid
6. Убедиться, что в настройках сервиса верно указан путь до pid файла
# cat /etc/systemd/system/artifactory.service PIDFile=/var/run/artifactory.pid
7. Перейти в каталог /var/opt/jfrog/artifactory/data/derby и удалить файл блокировки БД derby (используется для восстановления подключения к существующей базе и для рекавери). Предварительно сделайте копию удаляемого файла db.lck. Не удаляйте и не изменяйте никакие другие файлы в этой директории – это приведет к невозможности процедуры восстановления БД!
# rm /var/opt/jfrog/artifactory/data/derby/db.lck
8. Дайте полные права тому пользователю, из-под которого запущен сервис artifactory, на директорию log. Не удаляйте и не изменяйте никакие другие файлы в этой директории – это приведет к невозможности процедуры восстановления БД!
# ls -l drwxrwxrwx 2 artifactory artifactory 4096 Jun 24 15:16 log
9. Выполнить запуск artifactory
# systemctl start artifactory.service
10. Удостовериться, что сервис запущен, работает UI, проходит авторизация, все артефакты на месте.