Sonarqube 警告web[o.s.s.n.NotificationService]无法传递通知

Sonarqube 警告web[o.s.s.n.NotificationService]无法传递通知,sonarqube,sonarqube5.1,Sonarqube,Sonarqube5.1,当我从5.0升级到5.1时,确实出现了这个错误 这是与我有关的。 有关详细信息,请参阅 这是一个bug,应该在5.1.1中用Simon Brandhof所说的方法修复它 现在我已经升级到5.1.1,我仍然有同样的问题 2015.06.09 09:52:48 WARN web[o.s.s.n.NotificationService] Unable to deliver notification Notification{type='issue-changes', fields={new.reso

当我从5.0升级到5.1时,确实出现了这个错误

这是与我有关的。 有关详细信息,请参阅

这是一个bug,应该在5.1.1中用Simon Brandhof所说的方法修复它

现在我已经升级到5.1.1,我仍然有同样的问题

2015.06.09 09:52:48 WARN  web[o.s.s.n.NotificationService] Unable to deliver notification Notification{type='issue-changes', fields={new.resolution=FIXED, old.status=OPEN, projectKey=xxxxxx, new.status=CLOSED, ruleName=Public types, methods and fields (API) should be documented with Javadoc, reporter=null, assignee=xxxxxx, message=Document this public constructor., old.reso
lution=null, projectName=xxxxxxxx, componentKey=null, key=d7571ab9-ac49-41c9-9973-35d4a1ee83cf}} for user xxxxx via EmailNotificationChannel
javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: could not execute query
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614) ~[hibernate-entitymanager-3.4.0.GA.jar:3.4.0.GA]
        at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:76) ~[hibernate-entitymanager-3.4.0.GA.jar:3.4.0.GA]
        at org.sonar.jpa.session.JpaDatabaseSession.getSingleResult(JpaDatabaseSession.java:207) ~[sonar-core-5.1.1.jar:na]
        at org.sonar.jpa.session.JpaDatabaseSession.getSingleResult(JpaDatabaseSession.java:238) ~[sonar-core-5.1.1.jar:na]
        at org.sonar.core.user.HibernateUserFinder.findByLogin(HibernateUserFinder.java:47) ~[sonar-core-5.1.1.jar:na]
        at org.sonar.plugins.emailnotifications.EmailNotificationChannel.deliver(EmailNotificationChannel.java:98) ~[na:na]
        at org.sonar.server.notifications.NotificationService.dispatch(NotificationService.java:200) [sonar-server-5.1.1.jar:na]
        at org.sonar.server.notifications.NotificationService.deliver(NotificationService.java:190) [sonar-server-5.1.1.jar:na]
        at org.sonar.server.computation.step.SendIssueNotificationsStep.doExecute(SendIssueNotificationsStep.java:83) [sonar-server-5.1.1.jar:na]
        at org.sonar.server.computation.step.SendIssueNotificationsStep.execute(SendIssueNotificationsStep.java:66) [sonar-server-5.1.1.jar:na]
        at org.sonar.server.computation.ComputationService.process(ComputationService.java:89) [sonar-server-5.1.1.jar:na]
        at org.sonar.server.computation.ComputationContainer.execute(ComputationContainer.java:47) [sonar-server-5.1.1.jar:na]
        at org.sonar.server.computation.ComputationThread.run(ComputationThread.java:58) [sonar-server-5.1.1.jar:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_45]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_45]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_45]
        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]
Caused by: org.hibernate.exception.JDBCConnectionException: could not execute query
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.doList(Loader.java:2235) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.list(Loader.java:2124) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67) ~[hibernate-entitymanager-3.4.0.GA.jar:3.4.0.GA]
        ... 18 common frames omitted
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_45]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_45]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_45]
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.Util.getInstance(Util.java:360) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1232) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1225) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4104) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4073) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281) ~[commons-dbcp-1.4.jar:1.4]
        at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313) ~[commons-dbcp-1.4.jar:1.4]
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1577) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.doQuery(Loader.java:696) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.doList(Loader.java:2232) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        ... 26 common frames omitted
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 264Â 434Â 682 milliseconds ago.  The last packet sent successfully to
ur application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.ction validity before use in yo      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_45]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_45]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_45]
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3661) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2417) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2530) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1907) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2030) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1907) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2030) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) ~[commons-dbcp-1.4.jar:1.4]
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) ~[commons-dbcp-1.4.jar:1.4]
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1812) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        at org.hibernate.loader.Loader.doQuery(Loader.java:697) ~[hibernate-core-3.3.2.GA.jar:3.3.2.GA]
        ... 28 common frames omitted
Caused by: java.net.SocketException: Relais brisé (pipe)
        at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.8.0_45]
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) ~[na:1.8.0_45]
        at java.net.SocketOutputStream.write(SocketOutputStream.java:153) ~[na:1.8.0_45]
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) ~[na:1.8.0_45]
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) ~[na:1.8.0_45]
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3643) ~[mysql-connector-java-5.1.34.jar:5.1.34]
        ... 38 common frames omitted
我没有访问Jira的权限,因此我无法向错误添加注释。 你能帮我做这个吗


以下是系统信息页面中的数据库配置:

Database
Database    MySQL
Database Version    5.5.37-log
Username    sonarqube@xxxxxxxxxxx
URL     jdbc:mysql://xxxxxxxxxx/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
Driver  MySQL Connector Java
Driver Version  mysql-connector-java-5.1.34 ( Revision: jess.balint@oracle.com-20141014163213-wqbwpf1ok2kvo1om )
Version Status  UP_TO_DATE
Pool Active Connections     2
Pool Max Connections    50
Pool Initial Size   0
Pool Idle Connections   3
Pool Min Idle Connections   2
Pool Max Idle Connections   5
Pool Max Wait (ms)  5000
Pool Remove Abandoned   false
Pool Remove Abandoned Timeout (seconds)     300

您是否尝试增加MySql实例的等待超时?从SQ 5.0开始,越来越多的分析处理在服务器端完成,因此这可以解释为什么一些DB请求需要时间来执行。增加等待超时是一种解决方法,但不是解决方案。问题不在于执行时间长的请求。问题是与数据库的连接未关闭,并且在sonarqube希望传递通知时被重用。因此,如果sonarqube在2天内不发送邮件,我必须将等待超时时间延长至2天!!这是一个回归,见错误4778和6556。它应该在5.1.1中修复……我的感觉是,您可能存在一些配置问题,因为我们的SonarQube()公共实例在MySql 5.6.19上运行5.1.1时没有遇到这样的问题。请您在问题中添加以下信息:SonarQube实例“系统信息”页面“数据库”部分的内容。@Fabrice SonarQubeTeam我已在问题中添加了数据库配置。自5.0以来,我从未更改过配置。我使用的配置与sonar.properties文件中给出的默认配置相同。是的,通知在Nemo上被激活(我每天都收到通知),我们在Nemo上从未遇到过这个问题。但也许您的实例发送的通知比Nemo多得多。能否尝试将“sonar.notifications.delay”属性(在conf/sonar.properties文件中)设置为类似“10”的值?这可能有助于减少查询数据库以发送通知所需的时间。看见