SonarQube 4.5.7 до 5.6.5 Ошибка обновления БД
Я попытался обновить наш экземпляр SonarQube с 4.5.7 LTS до 5.6.5 LTS. Я следовал предоставленной документации по обновлению SonarQube. После просмотра [sonarserver]:9000/setup и запустил обновление БД. Обновление прошло чуть более 2 часов и вернулось с этим сообщением:
Upgrade Failed
Database connection cannot be established. Please check database status and JDBC settings.
При просмотре журнала я вижу эту ошибку:
2017.02.16 13:18:43 ERROR web[o.s.s.d.m.DatabaseMigrator] Fail to execute database migration: org.sonar.db.version.v50.FeedFileSources
java.lang.IllegalStateException: Error during processing of row: [uuid=AVpHrbhU29-XDi5QdhtN,uuid=AVpHrbk629-XDi5Qdh0r,data=using System;
Я скопировал весь журнал обновления базы данных здесь: http://pastebin.com/p9CkYhrU
Я также попытался перезапустить SonarQube и снова попытаться обновить базу данных, но он работал в течение 5-10 минут и сообщил о том же результате.
Дополнительные детали:
Текущий SonarQube: 4.5.7 LTS
Новый SonarQube: 5.6.5 LTS
БД: MySQL 5.7.17
Операционная система: Windows Server 2012 R2
После неудачного обновления мы вернулись к 4.5.7 успешно.
Мы также ранее обновили с 4.3.1 до 4.5.7 LTS. Во время этого обновления мы переместили нашу базу данных SonarQube с MySQL 5.5 на 5.7.17, а затем обновили SonarQube до 4.5.7 LTS. Шаг обновления для этого длился два часа и успешно завершен.
Спасибо за любую помощь,
-Эдди
1 ответ
ОБНОВЛЕНИЕ 21.02.17
Я выдержал тестовый экземпляр для этого обновления SonarQube на другом сервере. Я установил MySQL 5.7 и SonarQube 4.5.7 LTS, используя те же данные резервного копирования. Во время обновления до SonarQube 5.6.5 LTS я получил ту же ошибку, что и раньше. Таким образом, я знал, что смогу продублировать ошибку. Я решил снова взглянуть на это сообщение об ошибке и нашел его чуть ниже:
Caused by: java.sql.BatchUpdateException: Packet for query is too large (6371233 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (6371233 > 4194304). You can change this value on the server by setting the `max_allowed_packet` variable.
Так что я пошел дальше и отредактировал max_allowed_packet
переменная в my.ini. Сначала я изменил его с 4M до 8M и получил аналогичную ошибку. Затем я изменил переменную на 16M, и обновление прошло после ошибки!
К сожалению, обновление БД продолжалось еще 11 часов и вернулось с другой ошибкой:
2017.02.21 02:48:13 ERROR web[o.s.s.d.m.DatabaseMigrator] Fail to execute database migration: org.sonar.db.version.v564.CleanUsurperRootComponents
java.lang.IllegalStateException: Error during processing of row: [id=62566,uuid=AVpc2I0gt4GsKrhSYYYQ]
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Application was streaming results when the connection failed. Consider raising value of 'net_write_timeout' on the server.
Caused by: java.net.SocketException: Connection reset
Я увеличил net_read_timeout в MySQL с 60 до 1200. set net_write_timeout = 1200;
Я перезапустил SonarQube, снова запустил обновление БД и получил ошибку. Обновление продолжилось, и я получил еще одну ошибку:
2017.02.21 09:57:05 ERROR web[o.s.s.d.m.PlatformDatabaseMigration] DB Migration or container restart failed. Process ended with an exception java.lang.IllegalStateException: Fail to load plugin Clirr [clirr]
Caused by: java.lang.NoClassDefFoundError: org/sonar/api/batch/maven/DependsUponMavenPlugin
Caused by: java.lang.ClassNotFoundException: org.sonar.api.batch.maven.DependsUponMavenPlugin
Похоже, ошибка плагина, поэтому я пошел дальше и посмотрел на этот отдельный плагин. Я нашел некоторую информацию о том, что плагин Clirr устарел, поэтому я удалил его из папки плагинов, перезапустил SonarQube и получил ошибку другого плагина (другой плагин). Я получил 6 или 7 из этих ошибок и смог их исправить, удалив или заменив.jar в папке плагинов на более новую совместимую версию.
Поэтому после исправления плагина Java я перезапустил SonarQube, и он запустился нормально! Сейчас я использую SonarQube 5.6.5 LTS на своем сервере песочницы. Следующим шагом для меня будет возврат к 4.5.7 LTS и попытка обновления снова, чтобы быть уверенным, что у меня будет успешное обновление производства в будущем.