尽管需要进行数据库迁移,但 SonarQube 以 NO_MIGRATION 回复

SonarQube replying with NO_MIGRATION although db migration is required

我们已经使用 Ansible 自动安装了 SonarQube 服务器。作为此过程的一部分,Ansible 轮询 URL sonar/api/server/index 以检查服务器是否正常 - 运行。一旦返回 HTTP 200 并且服务器状态等于 SETUP...

<server>
    <id>20170131094026</id>
    <version>5.6.2</version>
    <status>SETUP</status>
</server>

...脚本通过向 sonar/api/server/setup 发送 POST 并等待返回 MIGRATION_SUCCEEDED 来触发数据库升级。

直到现在我尝试将 SonarQube 从版本 5.6.2 升级到 5.6.5 时,它一直运行良好。由于某种原因 sonar/api/server/index 现在总是 returns 状态 UP(即使 GUI 清楚地表明它仍在维护中)并且 POSTsonar/api/server/setup 表示数据库是最新的,不需要迁移 (NO_MIGRATION)。

但是,服务器仍处于维护模式,nexus.log 不断重复同一行:

09:41:05 INFO  ce[o.s.c.a.WebServerWatcherImpl] Still waiting for WebServer...
09:41:39 INFO  ce[o.s.c.a.WebServerWatcherImpl] Still waiting for WebServer...
09:43:13 INFO  ce[o.s.c.a.WebServerWatcherImpl] Still waiting for WebServer...
09:47:28 INFO  ce[o.s.c.a.WebServerWatcherImpl] Still waiting for WebServer...

当我手动导航到 sonar/setup 并单击“更新”按钮时,数据库迁移开始... API 中是否有任何更改?我是否调用了错误的 REST 端点?

您正在使用内部网络服务(api/server/index 和 api/server/upgrade)。响应和行为可以在没有任何通知的情况下在版本之间更改。

您应该改用:

  1. GET api/system/db_migration_status : 获取数据库迁移状态
  2. POST api/system/migrate_db : 执行迁移

我鼓励您访问 http:///web_api 以查看适用于您使用的 SonarQube 版本的可用 Web 服务的文档。