SonarQube 5.1 в Solaris не показывает исходные файлы
Я пытался перейти с устаревшей установки гидролокатора на более новую версию SonarQube 5.1.2. Приложение работает на платформе Solaris и поддерживается базой данных Oracle.
Почти все работает нормально, за исключением того, что исходный код не отображается ни для какого исходного файла, ни в каком контексте.
Любой запрос к */api/sources/lines? Uuid=...&from=1&to=1000 приводит к 404 с объектом json, содержащим следующее сообщение:
"File '...' has no sources"
Я попытался запустить анализ с нашего сервера Hudson и Maven, с теми же результатами. Пройдя несколько часов в Интернете и не обнаружив вопросов с такими же симптомами, я обращаюсь к SO за помощью. Во всех темах, которые я прочитал, либо анализ не запускается (например, Невозможно запустить анализ в SonarQube 5.1), либо код показан для некоторых проблем, а не для других (например, Sonarqube Javascript Coverage не показывает исходные файлы),
Из-за усталости я попытался установить точно такую же версию SonarQube (5.1.2, тот же zip-файл, что и на Solaris), с такой же конфигурацией на моем локальном компьютере (под управлением Linux). Единственные различия:
- поддерживающая ОС (Solaris / Linux)
- база данных (Oracle / H2)
- JDK (хотя оба являются оракулом 1.8.0_45)
К моему ужасу, он прекрасно работает.
Я включил журналы DEBUG на сервере и не смог получить дополнительную информацию о том, как / почему индекс эластичного поиска не находит источник для наших проектов.
Любая информация о том, как я могу продолжить расследование по этому вопросу, будет приветствоваться.
2 ответа
Проекты должны быть проанализированы снова при обновлении с (очень) старых версий, таких как 3.2. Это должно вернуть отображение источников назад.
Я смог обойти свою проблему, следуя совету Саймона.
Я
- перед обновлением с 3.2.1 до 5.1.2 восстановил резервную копию из базы данных
- произвел обновление до версии 4.5.6 LTS
- Проведите несколько анализов в течение нескольких дней в версии 4.5.6, убедившись, что все работает правильно
- создал резервную копию базы данных для версии 4.5.6
- произвел обновление до версии 5.1.2
Во время перехода на 5.1.2 IndexSynchronizer столкнулся с некоторой проблемой (из-за упругости поиска, очевидно, перегружающей ЦП хоста):
2015.11.03 13:21:23 INFO web[o.s.s.s.IndexSynchronizer] Index source lines
2015.11.03 13:22:10 INFO es[o.e.monitor.jvm] [sonar-1446552525578] [gc][young][766][38] duration [784ms], collections [1]/[1s], total [784ms]/[6.6s], memory [194mb]->[126.7mb]/[989.8mb], all_pools {[young] [58.6mb]->[2.1kb]/[273mb]}{[survivor] [8.5mb]->[8.5mb]/[34.1mb]}{[old] [126.8mb]->[118.2mb]/[682.6mb]}
2015.11.03 13:22:23 INFO web[o.s.s.es.BulkIndexer] 110525 requests processed (1842 items/sec)
2015.11.03 13:22:30 WARN es[o.e.monitor.jvm] [sonar-1446552525578] [gc][young][784][51] duration [2.1s], collections [2]/[2.9s], total [2.1s]/[10.7s], memory [175.6mb]->[148.3mb]/[989.8mb], all_pools {[young] [42.2mb]->[37.3kb]/[273mb]}{[survivor] [8.5mb]->[8.5mb]/[34.1mb]}{[old] [124.9mb]->[139.7mb]/[682.6mb]}
2015.11.03 13:23:23 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (269 items/sec)
2015.11.03 13:24:23 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:25:23 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:26:23 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:27:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:28:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:29:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:30:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:31:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:32:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:33:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:34:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:35:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:36:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:37:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:38:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:39:24 INFO web[o.s.s.es.BulkIndexer] 126712 requests processed (0 items/sec)
2015.11.03 13:40:07 INFO web[o.e.client.transport] [sonar-1446552525578] failed to get node info for [#transport#-1][localhost][inet[/127.0.0.1:9001]], disconnecting...
org.elasticsearch.transport.ReceiveTimeoutTransportException: [][inet[/127.0.0.1:9001]][cluster:monitor/nodes/info] request_id [3417] timed out after [5834ms]
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:366) ~[elasticsearch-1.4.4.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
2015.11.03 13:40:07 WARN es[o.e.monitor.jvm] [sonar-1446552525578] [gc][young][788][54] duration [17.5m], collections [1]/[17.5m], total [17.5m]/[17.7m], memory [101mb]->[104.3mb]/[989.8mb], all_pools {[young] [7.8mb]->[380.8kb]/[273mb]}{[survivor] [8.5mb]->[8.5mb]/[34.1mb]}{[old] [84.7mb]->[95.5mb]/[682.6mb]}
Wrapper Process has not received any CPU time for 978 seconds. Extending timeouts.
2015.11.03 13:40:07 ERROR web[o.s.s.ui.JRubyFacade] Fail to upgrade database
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Fail to execute ES search request '{"size":100,"query":{"filtered":{"query":{"match_all":{}},"filter":{"bool":{"must":[{"term":{"fileUuid":"3d674506-5a64-4b1e-a849-2c051e736e55","_cache":false}},{"range":{"line":{"from":250,"to":null,"include_lower":false,"include_upper":true},"_cache":false}}],"_cache":false}}}},"_source":false}' on indices '[sourcelines]' on types '[sourceline]'
com.google.common.base.Throwables.propagate(Throwables.java:156)
org.sonar.server.es.BaseIndexer.index(BaseIndexer.java:77)
org.sonar.server.search.IndexSynchronizer.execute(IndexSynchronizer.java:90)
После этого он просто зависал и не продолжал ни обновление, ни показ страницы индекса (оба / перенаправлены в /maintenance и /setup показали сообщение об ошибке). После остановки и перезапуска сонара он в конечном итоге завершил миграцию индекса исходных файлов, и с этого момента он, кажется, работает как ожидалось.