Author: radu
Date: Thu Aug 24 11:00:19 2017
New Revision: 1806025
URL: http://svn.apache.org/viewvc?rev=1806025&view=rev
Log:
SLING-7083 - The StopMojo should block until the process is finished
* allowed the mojo to uniformly block until the instances it tries to stop
are either stopped through the control listener or through sending the
terminate signal
* enforced Java 8, since its java.util.concurrent.Process implementation
provides built-in feature for blocking until a process is terminated
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/run/LauncherCallable.java
Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml?rev=1806025&r1=1806024&r2=1806025&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml Thu Aug 24
11:00:19 2017
@@ -33,6 +33,7 @@
<properties>
<maven.version>3.0.5</maven.version>
<maven.site.path>${project.artifactId}-archives/${project.artifactId}-LATEST</maven.site.path>
+ <sling.java.version>8</sling.java.version>
</properties>
<scm>
@@ -52,6 +53,27 @@
<build>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>enforce-java</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireJavaVersion>
+ <message>${project.name} must be compiled
with Java 1.8 or higher.</message>
+
<version>1.${sling.java.version}.0</version>
+ </requireJavaVersion>
+ </rules>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.5.5</version>
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/run/LauncherCallable.java
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/run/LauncherCallable.java?rev=1806025&r1=1806024&r2=1806025&view=diff
==============================================================================
---
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/run/LauncherCallable.java
(original)
+++
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/run/LauncherCallable.java
Thu Aug 24 11:00:19 2017
@@ -29,6 +29,7 @@ import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.io.IOUtils;
import org.apache.maven.plugin.logging.Log;
@@ -294,20 +295,9 @@ public class LauncherCallable implements
final Process process = cfg.getProcess();
if (!destroy) {
- // as shutdown might block forever, we use a timeout
- final long now = System.currentTimeMillis();
- final long end = now + twoMinutes;
-
LOG.debug("Waiting for process to stop...");
-
- while (isAlive(process) && (System.currentTimeMillis() <
end)) {
- try {
- Thread.sleep(2500);
- } catch (InterruptedException e) {
- // ignore
- }
- }
- if (isAlive( process)) {
+ process.waitFor(twoMinutes, TimeUnit.MILLISECONDS);
+ if (process.isAlive()) {
LOG.debug("Process timeout out after 2 minutes");
destroy = true;
} else {
@@ -318,6 +308,7 @@ public class LauncherCallable implements
if (destroy) {
LOG.debug("Destroying process...");
process.destroy();
+ process.waitFor(twoMinutes, TimeUnit.MILLISECONDS);
LOG.debug("Process destroyed");
}
@@ -328,19 +319,10 @@ public class LauncherCallable implements
}
}
- private static boolean isAlive(Process process) {
- try {
- process.exitValue();
- return false;
- } catch (IllegalThreadStateException e) {
- return true;
- }
- }
-
private static File getControlPortFile(final File directory) {
final File launchpadDir = new File(directory,
LaunchpadEnvironment.WORK_DIR_NAME);
final File confDir = new File(launchpadDir, "conf");
final File controlPortFile = new File(confDir, "controlport");
return controlPortFile;
}
-}
\ No newline at end of file
+}