首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sonarqube 5.6数据库副本失败(异常向侦听器发送上下文初始化事件.)

Sonarqube 5.6数据库副本失败(异常向侦听器发送上下文初始化事件.)
EN

Stack Overflow用户
提问于 2017-01-21 12:13:14
回答 2查看 424关注 0票数 0

我需要移动一个Sonarqube5.6安装从一个服务器到另一个服务器。新服务器还将使用新数据库运行,因此我的计划是将旧数据复制到新数据库,然后针对包含复制数据的新数据库启动新的Sonarqube实例。

新旧版本都是Oracle的Sonarqube 5.6。旧的数据库是Oracle 11g,新的将是Oracle 12c,但是我使用Oracle Express 11g和另一个本地Sonarqube 5.6安装来测试这个过程。

我的发言如下:

(1)用SQL Developer作为DDL导出旧数据库(插入格式)

(2)对生成的sql进行一些小的更改:

  • 表空间名称是硬编码的,在目标数据库中是不同的,因此可以适应。
  • 子句“段创建延迟”在目标数据库中不受支持,所以我只是删除了它。

(3)将sql导入新的目标数据库

(4)启动连接到新数据库的新Sonarqube实例

不幸的是,在这之后,Sonarqube服务器结束了,在日志中,我看到了错误/异常:

将上下文初始化事件发送到类org.sonar.server.platform.PlatformServletContextListener的侦听器实例的异常

(下文全文)。

进一步的测试:如果我针对没有导入数据的新数据库启动新的Sonarqube实例,就会创建新的表,一切都很好。完成之后,我还可以导出新的数据库,删除和重新创建新的sonarqube数据库用户,并从新环境重新导入数据,也可以正常工作。也就是说,在独立模式下的新安装工作正常,导出/导入也运行良好(至少使用最少的数据并从相同的环境/数据库导出)。因此,这个问题似乎是由我从旧Sonarqube安装中导入的数据引起的。在导入之后,我还尝试重新构建所有索引(没有更改),并从所有表中删除所有行(sonarqube随后尝试创建新表,并由于表项目alread的存在而出现错误)。

我确实想到的一件事是,旧的安装有许多插件。我试图使新安装达到相同的状态,但它并不完全相同,有几个版本的差异,旧的安装有一些许可插件(Swift和Objective ),我没有本地测试安装。日志中也有一些类似的错误消息,但这些似乎不是关键问题。

**2017.01.21 00:07:53错误webcpp无cpp许可证

2017.01.21 00:07:53错误webobjc无objc许可证**

在针对新数据库启动新服务器之前,我还尝试删除Sonarqube中的日志、数据、临时目录。当然,我已经搜索了这个错误消息,但是它似乎主要发生在从一个Sonar版本迁移到另一个版本时,这不是这样的情况。

有人有什么想法吗?这个程序理论上是可行的,还是我遗漏了什么?

非常感谢您的任何想法!

代码语言:javascript
复制
2017.01.21 00:08:29 INFO  web[o.s.s.n.NotificationService] Notification service stopped
2017.01.21 00:08:29 ERROR web[o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextListener
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NullPointerException
        at com.google.common.base.Throwables.propagate(Throwables.java:160) ~[guava-17.0.jar:na]
        at org.sonar.server.es.BaseIndexer.index(BaseIndexer.java:82) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.es.BaseIndexer.index(BaseIndexer.java:88) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.es.IndexerStartupTask.execute(IndexerStartupTask.java:71) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.platform.platformlevel.PlatformLevelStartup$1.doPrivileged(PlatformLevelStartup.java:81) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.user.DoPrivileged.execute(DoPrivileged.java:44) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.platform.platformlevel.PlatformLevelStartup.start(PlatformLevelStartup.java:77) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.platform.Platform.executeStartupTasks(Platform.java:201) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.platform.Platform.doStart(Platform.java:114) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.platform.Platform.doStart(Platform.java:99) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.platform.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:44) ~[sonar-server-5.6.jar:na]
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) [tomcat-embed-core-8.0.30.jar:8.0.30]
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) [tomcat-embed-core-8.0.30.jar:8.0.30]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.0.30.jar:8.0.30]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) [tomcat-embed-core-8.0.30.jar:8.0.30]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [tomcat-embed-core-8.0.30.jar:8.0.30]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_65]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_65]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65]
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.8.0_65]
        at java.util.concurrent.FutureTask.get(FutureTask.java:192) [na:1.8.0_65]
        at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:135) ~[guava-17.0.jar:na]
        at org.sonar.server.es.BaseIndexer.index(BaseIndexer.java:80) ~[sonar-server-5.6.jar:na]
        ... 18 common frames omitted
Caused by: java.lang.NullPointerException: null
        at java.io.FilterInputStream.close(FilterInputStream.java:181) ~[na:1.8.0_65]
        at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:303) ~[commons-io-2.4.jar:2.4]
        at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:246) ~[commons-io-2.4.jar:2.4]
        at org.sonar.db.source.FileSourceDto.decodeTestData(FileSourceDto.java:169) ~[sonar-db-5.6.jar:na]
        at org.sonar.server.test.index.TestResultSetIterator.read(TestResultSetIterator.java:79) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.test.index.TestResultSetIterator.read(TestResultSetIterator.java:60) ~[sonar-server-5.6.jar:na]
        at org.sonar.db.ResultSetIterator.next(ResultSetIterator.java:82) ~[sonar-db-5.6.jar:na]
        at org.sonar.server.test.index.TestIndexer.doIndex(TestIndexer.java:93) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.test.index.TestIndexer.doIndex(TestIndexer.java:80) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.test.index.TestIndexer.doIndex(TestIndexer.java:70) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.es.BaseIndexer$2.index(BaseIndexer.java:91) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.es.BaseIndexer$1.run(BaseIndexer.java:73) ~[sonar-server-5.6.jar:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_65]
        ... 4 common frames omitted
2017.01.21 00:08:29 ERROR web[o.a.c.c.StandardContext] One or more listeners failed to start. Full details will be found in the appropriate container log file
2017.01.21 00:08:29 ERROR web[o.a.c.c.StandardContext] Context [] startup failed due to previous errors
2017.01.21 00:08:29 WARN  web[o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [Thread-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:170)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 com.sun.jndi.ldap.Connection.run(Connection.java:860)
 java.lang.Thread.run(Thread.java:745)
2017.01.21 00:08:29 WARN  web[o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [Progress[BulkIndexer[tests]]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.util.TimerThread.mainLoop(Timer.java:552)
 java.util.TimerThread.run(Timer.java:505)
2017.01.21 00:08:29 INFO  web[o.a.c.h.Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-9000"]
2017.01.21 00:08:29 INFO  web[o.s.s.a.TomcatAccessLog] Web server is started
2017.01.21 00:08:29 INFO  web[o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000
2017.01.21 00:08:29 WARN  web[o.s.p.ProcessEntryPoint] Fail to start web
java.lang.IllegalStateException: Webapp did not start
        at org.sonar.server.app.EmbeddedTomcat.isUp(EmbeddedTomcat.java:84) ~[sonar-server-5.6.jar:na]
        at org.sonar.server.app.WebServer.isUp(WebServer.java:47) [sonar-server-5.6.jar:na]
        at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:105) ~[sonar-process-5.6.jar:na]
        at org.sonar.server.app.WebServer.main(WebServer.java:68) [sonar-server-5.6.jar:na]
2017.01.21 00:08:29 INFO  web[o.a.c.h.Http11NioProtocol] Pausing ProtocolHandler ["http-nio-0.0.0.0-9000"]
2017.01.21 00:08:30 INFO  web[o.a.c.h.Http11NioProtocol] Stopping ProtocolHandler ["http-nio-0.0.0.0-9000"]
2017.01.21 00:08:30 INFO  web[o.a.c.h.Http11NioProtocol] Destroying ProtocolHandler ["http-nio-0.0.0.0-9000"]
2017.01.21 00:08:30 INFO  web[o.s.s.a.TomcatAccessLog] Web server is stopped
2017.01.21 00:08:30 INFO  app[o.s.p.m.Monitor] Process[es] is stopping
2017.01.21 00:08:31 INFO   es[o.s.p.StopWatcher]  Stopping process
2017.01.21 00:08:31 INFO   es[o.elasticsearch.node]  [sonar-1484953654097] stopping ...
EN

回答 2

Stack Overflow用户

发布于 2017-01-21 14:56:12

如果目标数据库不是源数据库的确切副本,则服务器无法启动。您应该反复检查所有表和序列都有完全相同的内容,包括主键的值。一种策略是在目标db上启动新的安装,以便SonarQube创建模式。然后可以还原数据备份。

票数 0
EN

Stack Overflow用户

发布于 2017-01-25 15:55:59

好的,现在开始工作吧,所以简单的更新一下也许会对其他人有所帮助.似乎有必要让新的声纳实例初始化新的数据库,然后进行“硬拷贝”,我的意思是在SQl开发人员中,选项复制对象、替换现有目标对象、在复制之前截断目标数据。

我无法完全理解这一点,因为最初的启动必须做一些导致错误消失的事情,所以即使在打印副本之后,也必须在数据库中保留一些东西。软拷贝,而不是替换对象,允许Sonar启动,但有问题--例如创建用户或组时的关键违规行为。后者可以通过重建索引和/或删除和重新激活约束来修复,前者是用于设置用户id的序列初始值不同的结果。但硬拷贝避开了所有这些问题,所以我建议这样做。我还从SONAR_HOME中删除了目录数据、临时目录、日志,我不能100%确定这是否必要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41779194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档