summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorStephane Gamard <stephane.gamard@searchbox.com>2014-07-17 11:53:07 +0200
committerStephane Gamard <stephane.gamard@searchbox.com>2014-07-18 11:27:59 +0200
commitd45f4535d2d3037ba297c2d54b0b77f459652c43 (patch)
tree4dc95336e3052c4fd878c8058a211fc6586d2fd9 /server
parent2ac26bfb14fa7e60f5c0fce212f092275630734b (diff)
downloadsonarqube-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.java28
-rw-r--r--server/sonar-search/src/main/resources/logback.xml4
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>