Skip to content

Commit 17bb733

Browse files
authored
Only enable support for tests.profile if jdk.jfr module is available in Gradle runtime (#12845)
1 parent 74085cd commit 17bb733

File tree

5 files changed

+23
-9
lines changed

5 files changed

+23
-9
lines changed

build.gradle

+3
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ apply from: file('buildSrc/scriptDepVersions.gradle')
111111

112112
apply from: file('gradle/generation/local-settings.gradle')
113113

114+
// Make sure the build environment is consistent.
115+
apply from: file('gradle/validation/check-environment.gradle')
116+
114117
// IDE support, settings and specials.
115118
apply from: file('gradle/ide/intellij-idea.gradle')
116119
apply from: file('gradle/ide/eclipse.gradle')

buildSrc/build.gradle

+6
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,9 @@ dependencies {
3838
implementation "commons-codec:commons-codec:${scriptDepVersions['commons-codec']}"
3939
}
4040

41+
if (!rootProject.hasJavaFlightRecorder) {
42+
logger.warn('Module jdk.jfr is not available; skipping compilation of Java Flight Recorder support.')
43+
tasks.named('compileJava').configure {
44+
exclude('**/ProfileResults.java')
45+
}
46+
}

gradle/testing/profiling.gradle

+10-9
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,18 @@
1515
* limitations under the License.
1616
*/
1717

18-
import org.apache.lucene.gradle.ProfileResults;
19-
2018
def recordings = files()
2119

2220
allprojects {
2321
plugins.withType(JavaPlugin) {
2422
ext {
2523
testOptions += [
26-
[propName: 'tests.profile', value: false, description: "Enable java flight recorder profiling."]
24+
[propName: 'tests.profile', value: false, description: "Enable Java Flight Recorder profiling."]
2725
]
2826
}
2927

3028
if (resolvedTestOption("tests.profile").toBoolean()) {
31-
allprojects {
29+
if (rootProject.hasJavaFlightRecorder) {
3230
tasks.withType(Test) {
3331
jvmArgs("-XX:StartFlightRecording=dumponexit=true,maxsize=250M,settings=" + rootProject.file("gradle/testing/profiling.jfc"),
3432
"-XX:+UnlockDiagnosticVMOptions",
@@ -41,17 +39,20 @@ allprojects {
4139
recordings = recordings.plus fileTree(dir: workingDir, include: '*.jfr')
4240
}
4341
}
42+
} else {
43+
throw new GradleException('Module jdk.jfr is not available; Java Flight Recorder profiles cannot be enabled.')
4444
}
4545
}
4646
}
4747
}
4848

4949
gradle.buildFinished {
5050
if (!recordings.isEmpty()) {
51-
ProfileResults.printReport(recordings.getFiles().collect { it.toString() },
52-
propertyOrDefault(ProfileResults.MODE_KEY, ProfileResults.MODE_DEFAULT) as String,
53-
Integer.parseInt(propertyOrDefault(ProfileResults.STACKSIZE_KEY, ProfileResults.STACKSIZE_DEFAULT)),
54-
Integer.parseInt(propertyOrDefault(ProfileResults.COUNT_KEY, ProfileResults.COUNT_DEFAULT)),
55-
Boolean.parseBoolean(propertyOrDefault(ProfileResults.LINENUMBERS_KEY, ProfileResults.LINENUMBERS_DEFAULT)))
51+
def pr = org.apache.lucene.gradle.ProfileResults;
52+
pr.printReport(recordings.getFiles().collect { it.toString() },
53+
propertyOrDefault(pr.MODE_KEY, pr.MODE_DEFAULT) as String,
54+
Integer.parseInt(propertyOrDefault(pr.STACKSIZE_KEY, pr.STACKSIZE_DEFAULT)),
55+
Integer.parseInt(propertyOrDefault(pr.COUNT_KEY, pr.COUNT_DEFAULT)),
56+
Boolean.parseBoolean(propertyOrDefault(pr.LINENUMBERS_KEY, pr.LINENUMBERS_DEFAULT)))
5657
}
5758
}

gradle/validation/check-environment.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.gradle.util.GradleVersion
2323
configure(rootProject) {
2424
ext {
2525
expectedGradleVersion = '8.4'
26+
hasJavaFlightRecorder = ModuleLayer.boot().findModule('jdk.jfr').map(this.class.module::canRead).orElse(false)
2627
}
2728

2829
wrapper {

lucene/CHANGES.txt

+3
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,9 @@ Build
348348

349349
* GITHUB#12655: Upgrade to Gradle 8.4 (Kevin Risden)
350350

351+
* GITHUB#12845: Only enable support for tests.profile if jdk.jfr module is available
352+
in Gradle runtime. (Uwe Schindler)
353+
351354
Other
352355
---------------------
353356

0 commit comments

Comments
 (0)