diff options
author | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-17 11:53:07 +0200 |
---|---|---|
committer | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-18 11:27:59 +0200 |
commit | d45f4535d2d3037ba297c2d54b0b77f459652c43 (patch) | |
tree | 4dc95336e3052c4fd878c8058a211fc6586d2fd9 /server | |
parent | 2ac26bfb14fa7e60f5c0fce212f092275630734b (diff) | |
download | sonarqube-d45f4535d2d3037ba297c2d54b0b77f459652c43.tar.gz sonarqube-d45f4535d2d3037ba297c2d54b0b77f459652c43.zip |
SONAR-5408 - Enforce existence of SONAR_HOME for process
Diffstat (limited to 'server')
-rw-r--r-- | server/sonar-process/src/main/java/org/sonar/process/Process.java | 28 | ||||
-rw-r--r-- | server/sonar-search/src/main/resources/logback.xml | 4 |
2 files changed, 29 insertions, 3 deletions
diff --git a/server/sonar-process/src/main/java/org/sonar/process/Process.java b/server/sonar-process/src/main/java/org/sonar/process/Process.java index 8aef7ff81a1..abcdd75dfb0 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/Process.java +++ b/server/sonar-process/src/main/java/org/sonar/process/Process.java @@ -29,6 +29,7 @@ import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; +import java.io.File; import java.lang.management.ManagementFactory; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -37,6 +38,8 @@ import java.util.concurrent.TimeUnit; public abstract class Process implements ProcessMXBean { + public static final String SONAR_HOME = "SONAR_HOME"; + public static final String NAME_PROPERTY = "pName"; public static final String PORT_PROPERTY = "pPort"; @@ -68,6 +71,9 @@ public abstract class Process implements ProcessMXBean { public Process(Props props) { + + validateSonarHome(props); + // Loading all Properties from file this.props = props; this.name = props.of(NAME_PROPERTY, null); @@ -90,7 +96,7 @@ public abstract class Process implements ProcessMXBean { throw new IllegalStateException("Process is not a compliant MBean", e); } - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){ + Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { Process.this.stop(); @@ -137,4 +143,24 @@ public abstract class Process implements ProcessMXBean { this.onStop(); LOGGER.info("Process[{}]::shutdown END", name); } + + private void validateSonarHome(Props props) { + + // check that we have a SONAR_HOME either in props or in env. + String sonarHome = props.of(SONAR_HOME, System.getenv(SONAR_HOME)); + if (StringUtils.isEmpty(sonarHome)) { + throw new IllegalStateException("variable SONAR_HOME is not set."); + } + + // check that SONAR_HOME exists + File home = new File(sonarHome); + if(!home.exists()) { + throw new IllegalStateException("Directory SONAR_HOME '" + sonarHome + "' is not set"); + } + + // check that SONAR_HOME is writable + if (!home.canWrite()) { + throw new IllegalStateException("Directory SONAR_HOME '" + sonarHome + "' is not writable"); + } + } }
\ No newline at end of file diff --git a/server/sonar-search/src/main/resources/logback.xml b/server/sonar-search/src/main/resources/logback.xml index 0bceb9d9eaf..993420cd06e 100644 --- a/server/sonar-search/src/main/resources/logback.xml +++ b/server/sonar-search/src/main/resources/logback.xml @@ -10,9 +10,9 @@ <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/> <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <File>logs/search.log</File> + <File>${SONAR_HOME}/logs/search.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <param name="FileNamePattern" value="${SONAR_HOME}/logs/sonar.%i.log"/> + <param name="FileNamePattern" value="${SONAR_HOME}/logs/search.%i.log"/> <param name="MinIndex" value="1"/> <param name="MaxIndex" value="3"/> </rollingPolicy> |