Browse Source

Improve thread-safe initialization of SLF4J

http://jira.qos.ch/browse/SLF4J-167 has been fixed in SLF4J 1.7.14
so that the initialization trick can be removed from SonarQube.
tags/6.2-RC1
Simon Brandhof 7 years ago
parent
commit
16bc842941
2 changed files with 2 additions and 15 deletions
  1. 1
    1
      pom.xml
  2. 1
    14
      server/sonar-process/src/main/java/org/sonar/process/LogbackHelper.java

+ 1
- 1
pom.xml View File

@@ -63,7 +63,7 @@
<h2.version>1.3.176</h2.version>
<jetty.version>8.1.12.v20130726</jetty.version>
<logback.version>1.1.3</logback.version>
<slf4j.version>1.7.12</slf4j.version>
<slf4j.version>1.7.21</slf4j.version>
<tomcat.version>8.0.32</tomcat.version>
<elasticsearch.version>2.3.3</elasticsearch.version>
<orchestrator.version>3.13-build640</orchestrator.version>

+ 1
- 14
server/sonar-process/src/main/java/org/sonar/process/LogbackHelper.java View File

@@ -48,20 +48,7 @@ public class LogbackHelper {
public static final String MAX_FILES_PROPERTY = "sonar.log.maxFiles";

public LoggerContext getRootContext() {
org.slf4j.Logger logger;
while (!((logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)) instanceof Logger)) {
// It occurs when the initialization step is still not finished because of a race condition
// on ILoggerFactory.getILoggerFactory
// http://jira.qos.ch/browse/SLF4J-167
// Substitute loggers are used.
// http://www.slf4j.org/codes.html#substituteLogger
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// Ignore
}
}
return ((Logger) logger).getLoggerContext();
return ((Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).getLoggerContext();
}

public LoggerContextListener enableJulChangePropagation(LoggerContext loggerContext) {

Loading…
Cancel
Save