Skip to content

Commit

Permalink
try port 6006 then find available port for child debug
Browse files Browse the repository at this point in the history
Signed-off-by: Scott Kurz <[email protected]>
  • Loading branch information
scottkurz committed Mar 11, 2023
1 parent 5fe8aa1 commit a039c53
Showing 1 changed file with 29 additions and 13 deletions.
42 changes: 29 additions & 13 deletions src/main/groovy/io/openliberty/tools/gradle/tasks/DevTask.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class DevTask extends AbstractFeatureTask {
@Optional
@Input
DevTaskUtil util = null;

// Default DevMode argument values
// DevMode uses CLI Arguments if provided, otherwise it uses ServerExtension properties if one exists, fallback to default value if neither are provided.
private static final int DEFAULT_VERIFY_TIMEOUT = 30;
Expand All @@ -87,6 +87,11 @@ class DevTask extends AbstractFeatureTask {
private static final boolean DEFAULT_KEEP_TEMP_DOCKERFILE = false;
private static final boolean DEFAULT_GENERATE_FEATURES = false;

// Debug port for BuildLauncher tasks launched from DevTask as parent JVM
// (parent defaults to '5005')
private Integer childDebugPort = null; // cache
private static final int DEFAULT_CHILD_DEBUG_PORT = 6006;

protected final String CONTAINER_PROPERTY_ARG = '-P'+CONTAINER_PROPERTY+'=true';

private Boolean hotTests;
Expand All @@ -98,6 +103,7 @@ class DevTask extends AbstractFeatureTask {

private Boolean skipTests;


@Option(option = 'skipTests', description = 'If this option is enabled, do not run any tests in dev mode. The default value is false.')
void setSkipTests(boolean skipTests) {
this.skipTests = skipTests;
Expand Down Expand Up @@ -1083,6 +1089,20 @@ class DevTask extends AbstractFeatureTask {
final ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(1, true));

String localMavenRepoForFeatureUtility = new File(new File(System.getProperty("user.home"), ".m2"), "repository");

File buildFile = project.getBuildFile();

// Instantiate util before any child gradle tasks launched so it can help find available port if needed
this.util = new DevTaskUtil(project.buildDir, serverInstallDir, getUserDir(project, serverInstallDir),
serverDirectory, sourceDirectory, testSourceDirectory, configDirectory, project.getRootDir(),
resourceDirs, hotTests.booleanValue(), skipTests.booleanValue(), artifactId, serverStartTimeout.intValue(),
verifyAppStartTimeout.intValue(), verifyAppStartTimeout.intValue(), compileWait.doubleValue(),
libertyDebug.booleanValue(), pollingTest.booleanValue(), container.booleanValue(), dockerfile, dockerBuildContext, dockerRunOpts,
dockerBuildTimeout, skipDefaultPorts.booleanValue(), keepTempDockerfile.booleanValue(), localMavenRepoForFeatureUtility,
getPackagingType(), buildFile, generateFeatures.booleanValue()
);

ProjectConnection gradleConnection = initGradleProjectConnection();
BuildLauncher gradleBuildLauncher = gradleConnection.newBuild();
try {
Expand Down Expand Up @@ -1145,18 +1165,6 @@ class DevTask extends AbstractFeatureTask {
gradleConnection.close();
}

String localMavenRepoForFeatureUtility = new File(new File(System.getProperty("user.home"), ".m2"), "repository");

File buildFile = project.getBuildFile();

util = new DevTaskUtil(project.buildDir, serverInstallDir, getUserDir(project, serverInstallDir),
serverDirectory, sourceDirectory, testSourceDirectory, configDirectory, project.getRootDir(),
resourceDirs, hotTests.booleanValue(), skipTests.booleanValue(), artifactId, serverStartTimeout.intValue(),
verifyAppStartTimeout.intValue(), verifyAppStartTimeout.intValue(), compileWait.doubleValue(),
libertyDebug.booleanValue(), pollingTest.booleanValue(), container.booleanValue(), dockerfile, dockerBuildContext, dockerRunOpts,
dockerBuildTimeout, skipDefaultPorts.booleanValue(), keepTempDockerfile.booleanValue(), localMavenRepoForFeatureUtility,
getPackagingType(), buildFile, generateFeatures.booleanValue()
);

util.addShutdownHook(executor);

Expand Down Expand Up @@ -1296,6 +1304,14 @@ class DevTask extends AbstractFeatureTask {
if (logger.isEnabled(LogLevel.DEBUG)) {
buildLauncher.addArguments("--debug");
}

if (Boolean.getBoolean("org.gradle.debug")) {
if (this.childDebugPort == null) {
childDebugPort = this.util.findAvailablePort(DEFAULT_CHILD_DEBUG_PORT, true)
logger.warn("Launch JVM with debug port = " + childDebugPort.toString() + ". The child daemon JVM will initially launch in a suspended state and require a debugger to be attached to proceed.")
}
buildLauncher.addArguments("-Dorg.gradle.debug.port=" + Integer.toString(childDebugPort))
}
buildLauncher.run();
}

Expand Down

0 comments on commit a039c53

Please sign in to comment.