From 0a4c45b120768879a8bce7b25b56d7118ac16a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Fri, 7 Aug 2026 15:46:13 +0200 Subject: [PATCH 1/8] Use JNA/WMI instead of PowerShell to list Windows processes SolrProcessManager previously spawned a powershell.exe process running Get-CimInstance to obtain command lines of Java processes on Windows. Replace this with a WMI (Win32_Process) query via JNA, avoiding an external process spawn and the dependency on PowerShell being present. - Add net.java.dev.jna:jna-platform dependency to solr-core - Drop the PowerShell JSON parsing helper and its test - Remove the broad "<>" execute grant from the test security policy (only needed to exec powershell) and add the JNA native-library load / jna.* property-read permissions instead --- gradle/libs.versions.toml | 1 + .../randomization/policies/solr-tests.policy | 6 +- solr/api/gradle.lockfile | 2 + solr/benchmark/gradle.lockfile | 2 + solr/core/build.gradle | 3 + solr/core/gradle.lockfile | 2 + .../apache/solr/cli/SolrProcessManager.java | 82 +++++++++---------- .../solr/cli/SolrProcessManagerTest.java | 11 --- solr/cross-dc-manager/gradle.lockfile | 2 + solr/licenses/jna-platform-5.19.1.jar.sha1 | 1 + solr/modules/analysis-extras/gradle.lockfile | 2 + solr/modules/clustering/gradle.lockfile | 2 + solr/modules/cross-dc/gradle.lockfile | 2 + solr/modules/cuvs/gradle.lockfile | 2 + solr/modules/extraction/gradle.lockfile | 3 +- solr/modules/gcs-repository/gradle.lockfile | 2 + solr/modules/jwt-auth/gradle.lockfile | 2 + solr/modules/langid/gradle.lockfile | 2 + solr/modules/language-models/gradle.lockfile | 2 + solr/modules/ltr/gradle.lockfile | 2 + solr/modules/opentelemetry/gradle.lockfile | 2 + solr/modules/s3-repository/gradle.lockfile | 2 + solr/modules/scripting/gradle.lockfile | 2 + solr/modules/sql/gradle.lockfile | 2 + solr/server/gradle.lockfile | 2 + solr/solr-ref-guide/gradle.lockfile | 2 + solr/solrj-jetty/gradle.lockfile | 2 + solr/solrj-streaming/gradle.lockfile | 2 + solr/solrj-zookeeper/gradle.lockfile | 2 + solr/solrj/gradle.lockfile | 2 + solr/test-framework/gradle.lockfile | 2 + solr/webapp/gradle.lockfile | 2 + 32 files changed, 98 insertions(+), 59 deletions(-) create mode 100644 solr/licenses/jna-platform-5.19.1.jar.sha1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e8a77111618c..201cc2826031 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -425,6 +425,7 @@ jersey-media-jsonjackson = { module = "org.glassfish.jersey.media:jersey-media-j jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrains-annotations" } # @keep transitive dependency for version alignment jna = { module = "net.java.dev.jna:jna", version.ref = "jna" } +jna-platform = { module = "net.java.dev.jna:jna-platform", version.ref = "jna" } # @keep transitive dependency for version alignment jodatime-jodatime = { module = "joda-time:joda-time", version.ref = "joda-time" } junit-junit = { module = "junit:junit", version.ref = "junit" } diff --git a/gradle/testing/randomization/policies/solr-tests.policy b/gradle/testing/randomization/policies/solr-tests.policy index fe21f45a04c3..8b163e3e8bb0 100644 --- a/gradle/testing/randomization/policies/solr-tests.policy +++ b/gradle/testing/randomization/policies/solr-tests.policy @@ -260,8 +260,10 @@ grant { // Run java permission java.io.FilePermission "${java.home}${/}-", "execute"; - // Required by SolrProcessManager on Windows to find Solr processes, used by StatusTool (CLI) - permission java.io.FilePermission "<>", "execute"; + // Required by SolrProcessManager on Windows to find Solr processes (used by StatusTool CLI): + // JNA queries WMI, which loads the native jnidispatch library and reads jna.* system properties. + permission java.lang.RuntimePermission "loadLibrary.*"; + permission java.util.PropertyPermission "jna.*", "read"; }; // Grant all permissions to Gradle test runner classes. diff --git a/solr/api/gradle.lockfile b/solr/api/gradle.lockfile index c3a167a80d7b..75263e64f5e8 100644 --- a/solr/api/gradle.lockfile +++ b/solr/api/gradle.lockfile @@ -89,6 +89,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:3.0.1=swaggerBuild jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,swaggerBuild,testRuntimeClasspath diff --git a/solr/benchmark/gradle.lockfile b/solr/benchmark/gradle.lockfile index ae84e49e3694..ea97c48f5809 100644 --- a/solr/benchmark/gradle.lockfile +++ b/solr/benchmark/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,testRuntime jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,testRuntimeClasspath net.sf.jopt-simple:jopt-simple:5.0.4=annotationProcessor,compileClasspath,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,testRuntimeClasspath diff --git a/solr/core/build.gradle b/solr/core/build.gradle index 4ba85d1d830b..9803b4ee1964 100644 --- a/solr/core/build.gradle +++ b/solr/core/build.gradle @@ -153,6 +153,9 @@ dependencies { implementation libs.apache.commons.exec + // Used by SolrProcessManager to query running processes via WMI on Windows + implementation libs.jna.platform + implementation libs.apache.log4j.api implementation libs.apache.log4j.core runtimeOnly libs.apache.log4j.slf4j2impl diff --git a/solr/core/gradle.lockfile b/solr/core/gradle.lockfile index ddfcd99d6046..bc1aa337239a 100644 --- a/solr/core/gradle.lockfile +++ b/solr/core/gradle.lockfile @@ -85,6 +85,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy net.bytebuddy:byte-buddy:1.18.9=jarValidation,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna-platform:5.19.1=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna:5.19.1=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-exec:1.6.0=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-lang3:3.20.0=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy diff --git a/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java b/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java index 3001fd2afd53..efcfcca656af 100644 --- a/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java +++ b/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java @@ -18,12 +18,12 @@ import static org.apache.solr.servlet.CoreContainerProvider.SOLR_INSTALL_DIR; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.sun.jna.platform.win32.COM.COMUtils; +import com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery; +import com.sun.jna.platform.win32.COM.WbemcliUtil.WmiResult; +import com.sun.jna.platform.win32.Ole32; import java.io.IOException; import java.lang.invoke.MethodHandles; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -37,7 +37,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.commons.io.IOUtils; import org.apache.lucene.util.Constants; import org.apache.solr.common.SolrException; import org.apache.solr.common.util.EnvUtils; @@ -160,7 +159,7 @@ private boolean isProcessSsl(ProcessHandle ph) { /** * Gets the command line of a process as a string. For Windows, we need to fetch command lines - * using a PowerShell command. + * from WMI (see {@link #commandLinesWindows()}). * * @param ph the process handle * @return the command line of the process @@ -174,55 +173,48 @@ private static Optional commandLine(ProcessHandle ph) { } /** - * Gets the command lines of all java processes on Windows using PowerShell. + * WMI columns to select from {@code Win32_Process}. The enum constant names are used verbatim as + * the WQL {@code SELECT} column names (WQL is case-insensitive). + */ + enum ProcessProperty { + PROCESSID, + NAME, + COMMANDLINE + } + + /** + * Gets the command lines of all java processes on Windows by querying WMI ({@code Win32_Process}) + * through JNA. This avoids spawning an external PowerShell process. * * @return a map of process IDs to command lines */ private static Map commandLinesWindows() { + COMUtils.checkRC(Ole32.INSTANCE.CoInitializeEx(null, Ole32.COINIT_MULTITHREADED)); try { - Process process = - new ProcessBuilder( - "powershell.exe", - "-Command", - "Get-CimInstance -ClassName Win32_Process | Where-Object { $_.Name -like '*java*' } | Select-Object ProcessId, CommandLine | ConvertTo-Json -Depth 1") - .redirectErrorStream(true) - .start(); - String output = IOUtils.toString(process.getInputStream(), StandardCharsets.UTF_8); - int exitCode = process.waitFor(); - if (exitCode != 0) { - String errorText = IOUtils.toString(process.getErrorStream(), StandardCharsets.UTF_8); - throw new SolrException( - SolrException.ErrorCode.SERVER_ERROR, - "Error getting command lines for Windows: " + errorText); + WmiResult result = + new WmiQuery<>("Win32_Process", ProcessProperty.class).execute(); + Map pidToCommandLine = new HashMap<>(); + for (int i = 0; i < result.getResultCount(); i++) { + Object name = result.getValue(ProcessProperty.NAME, i); + if (name == null || !name.toString().toLowerCase(Locale.ROOT).contains("java")) { + continue; + } + Object commandLine = result.getValue(ProcessProperty.COMMANDLINE, i); + Object processId = result.getValue(ProcessProperty.PROCESSID, i); + // CommandLine can be null if the current user cannot read it for that process + if (commandLine != null && processId != null) { + pidToCommandLine.put(((Number) processId).longValue(), commandLine.toString()); + } } - return parseWindowsPidToCommandLineJson(output); - } catch (IOException e) { + return pidToCommandLine; + } catch (RuntimeException e) { throw new SolrException( - SolrException.ErrorCode.SERVER_ERROR, "Error getting command lines for Windows"); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new SolrException( - SolrException.ErrorCode.SERVER_ERROR, - "Interrupted while getting command lines for Windows"); + SolrException.ErrorCode.SERVER_ERROR, "Error getting command lines for Windows", e); + } finally { + Ole32.INSTANCE.CoUninitialize(); } } - static Map parseWindowsPidToCommandLineJson(String jsonString) - throws JsonProcessingException { - // Json format: [{"ProcessId": 1234, "CommandLine": "java foo"}] - ObjectMapper mapper = new ObjectMapper(); - List processInfoList = - mapper.readValue(jsonString, new TypeReference<>() {}); - return processInfoList.stream() - .filter(p -> p.CommandLine != null) - .collect(Collectors.toMap(p -> p.ProcessId, p -> p.CommandLine)); - } - - public static class WindowsProcessInfo { - public long ProcessId; - public String CommandLine; - } - /** * Gets the arguments of a process as a list of strings. With workaround for Windows. * diff --git a/solr/core/src/test/org/apache/solr/cli/SolrProcessManagerTest.java b/solr/core/src/test/org/apache/solr/cli/SolrProcessManagerTest.java index 2102e1e3d75d..e31ccb3381ec 100644 --- a/solr/core/src/test/org/apache/solr/cli/SolrProcessManagerTest.java +++ b/solr/core/src/test/org/apache/solr/cli/SolrProcessManagerTest.java @@ -16,7 +16,6 @@ */ package org.apache.solr.cli; -import com.fasterxml.jackson.core.JsonProcessingException; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -28,7 +27,6 @@ import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; -import java.util.Map; import java.util.stream.Collectors; import org.apache.commons.math3.util.Pair; import org.apache.solr.SolrTestCase; @@ -175,15 +173,6 @@ public void testSolrProcessMethods() { assertEquals("https://localhost:" + processHttps.getKey() + "/solr", https.getLocalUrl()); } - public void testParseWindowsPidToCommandLineJson() throws JsonProcessingException { - String jsonResponseFromPowershell = - "[{\"ProcessId\": 9356, \"CommandLine\": \"date\"}, {\"ProcessId\": 4736, \"CommandLine\": null}\n]"; - Map pidToCommandLine = - SolrProcessManager.parseWindowsPidToCommandLineJson(jsonResponseFromPowershell); - assertEquals(1, pidToCommandLine.size()); - assertEquals("date", pidToCommandLine.get(9356L)); - } - /** * This class is started as new java process by {@link SolrProcessManagerTest#createProcess}, and * it listens to an HTTP(s) port to simulate a real Solr process. diff --git a/solr/cross-dc-manager/gradle.lockfile b/solr/cross-dc-manager/gradle.lockfile index a60d7f62fdd8..b12197a6b14d 100644 --- a/solr/cross-dc-manager/gradle.lockfile +++ b/solr/cross-dc-manager/gradle.lockfile @@ -102,6 +102,8 @@ javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcess junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.18.9=jarValidation,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath net.sf.jopt-simple:jopt-simple:5.0.4=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath net.sourceforge.argparse4j:argparse4j:0.7.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/licenses/jna-platform-5.19.1.jar.sha1 b/solr/licenses/jna-platform-5.19.1.jar.sha1 new file mode 100644 index 000000000000..a8e52af219a6 --- /dev/null +++ b/solr/licenses/jna-platform-5.19.1.jar.sha1 @@ -0,0 +1 @@ +d1e54d9231da5ca3fa730d52960deaa555475468 diff --git a/solr/modules/analysis-extras/gradle.lockfile b/solr/modules/analysis-extras/gradle.lockfile index 87c45ec45920..80a897bb9717 100644 --- a/solr/modules/analysis-extras/gradle.lockfile +++ b/solr/modules/analysis-extras/gradle.lockfile @@ -81,6 +81,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/clustering/gradle.lockfile b/solr/modules/clustering/gradle.lockfile index 99f1b806e091..5d5ce4994f05 100644 --- a/solr/modules/clustering/gradle.lockfile +++ b/solr/modules/clustering/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/cross-dc/gradle.lockfile b/solr/modules/cross-dc/gradle.lockfile index 0044e890b0b1..4089c630b34b 100644 --- a/solr/modules/cross-dc/gradle.lockfile +++ b/solr/modules/cross-dc/gradle.lockfile @@ -82,6 +82,8 @@ javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcess junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.18.9=jarValidation,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/cuvs/gradle.lockfile b/solr/modules/cuvs/gradle.lockfile index bee22fe0fbd5..a305a10b9e80 100644 --- a/solr/modules/cuvs/gradle.lockfile +++ b/solr/modules/cuvs/gradle.lockfile @@ -80,6 +80,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/extraction/gradle.lockfile b/solr/modules/extraction/gradle.lockfile index a3ef6b0dafa8..528840efb1d6 100644 --- a/solr/modules/extraction/gradle.lockfile +++ b/solr/modules/extraction/gradle.lockfile @@ -81,7 +81,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-compress:1.28.0=jarValidation,testCompileClasspath,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/gcs-repository/gradle.lockfile b/solr/modules/gcs-repository/gradle.lockfile index 485b424ab5db..e89290189567 100644 --- a/solr/modules/gcs-repository/gradle.lockfile +++ b/solr/modules/gcs-repository/gradle.lockfile @@ -130,6 +130,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/jwt-auth/gradle.lockfile b/solr/modules/jwt-auth/gradle.lockfile index b23540782e98..9cb7d14d41a7 100644 --- a/solr/modules/jwt-auth/gradle.lockfile +++ b/solr/modules/jwt-auth/gradle.lockfile @@ -95,6 +95,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath net.minidev:accessors-smart:2.5.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.minidev:json-smart:2.5.2=jarValidation,testCompileClasspath,testRuntimeClasspath no.nav.security:mock-oauth2-server:5.0.1=jarValidation,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/langid/gradle.lockfile b/solr/modules/langid/gradle.lockfile index de28a2636fc6..ba865f1be100 100644 --- a/solr/modules/langid/gradle.lockfile +++ b/solr/modules/langid/gradle.lockfile @@ -79,6 +79,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/language-models/gradle.lockfile b/solr/modules/language-models/gradle.lockfile index b5b02791f2ca..7e7602d62fd8 100644 --- a/solr/modules/language-models/gradle.lockfile +++ b/solr/modules/language-models/gradle.lockfile @@ -97,6 +97,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/ltr/gradle.lockfile b/solr/modules/ltr/gradle.lockfile index 83645788f9d9..2e9e535d04d9 100644 --- a/solr/modules/ltr/gradle.lockfile +++ b/solr/modules/ltr/gradle.lockfile @@ -79,6 +79,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/opentelemetry/gradle.lockfile b/solr/modules/opentelemetry/gradle.lockfile index b9150edaca66..b67f62c0173d 100644 --- a/solr/modules/opentelemetry/gradle.lockfile +++ b/solr/modules/opentelemetry/gradle.lockfile @@ -87,6 +87,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/s3-repository/gradle.lockfile b/solr/modules/s3-repository/gradle.lockfile index e954715ad597..6573d118c60e 100644 --- a/solr/modules/s3-repository/gradle.lockfile +++ b/solr/modules/s3-repository/gradle.lockfile @@ -93,6 +93,8 @@ javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcess joda-time:joda-time:2.14.2=jarValidation,testCompileClasspath,testRuntimeClasspath junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/scripting/gradle.lockfile b/solr/modules/scripting/gradle.lockfile index a8b1799aee1d..480fc01547c7 100644 --- a/solr/modules/scripting/gradle.lockfile +++ b/solr/modules/scripting/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/modules/sql/gradle.lockfile b/solr/modules/sql/gradle.lockfile index 042a7f184bfc..78d3ced4a81d 100644 --- a/solr/modules/sql/gradle.lockfile +++ b/solr/modules/sql/gradle.lockfile @@ -81,6 +81,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.calcite.avatica:avatica-core:1.25.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath org.apache.calcite.avatica:avatica-metrics:1.25.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath diff --git a/solr/server/gradle.lockfile b/solr/server/gradle.lockfile index 4daac6874889..542ff98fe147 100644 --- a/solr/server/gradle.lockfile +++ b/solr/server/gradle.lockfile @@ -76,6 +76,8 @@ jakarta.validation:jakarta.validation-api:3.1.0=jarValidation,runtimeClasspath,s jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,solrCore jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,solrCore javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,solrCore +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,solrCore org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,solrCore org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,solrCore org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,solrCore diff --git a/solr/solr-ref-guide/gradle.lockfile b/solr/solr-ref-guide/gradle.lockfile index 826be023c52b..a04e07da19d0 100644 --- a/solr/solr-ref-guide/gradle.lockfile +++ b/solr/solr-ref-guide/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=testRuntimeClasspath jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=testRuntimeClasspath org.apache.calcite.avatica:avatica-core:1.25.0=testRuntimeClasspath org.apache.calcite.avatica:avatica-metrics:1.25.0=testRuntimeClasspath diff --git a/solr/solrj-jetty/gradle.lockfile b/solr/solrj-jetty/gradle.lockfile index 736690e69b2c..93c32c6af418 100644 --- a/solr/solrj-jetty/gradle.lockfile +++ b/solr/solrj-jetty/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,testRuntime jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,testRuntimeClasspath diff --git a/solr/solrj-streaming/gradle.lockfile b/solr/solrj-streaming/gradle.lockfile index 28bf7a0cfbc6..1defd1682ef4 100644 --- a/solr/solrj-streaming/gradle.lockfile +++ b/solr/solrj-streaming/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,testRuntime jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath org.apache.calcite.avatica:avatica-core:1.25.0=jarValidation,testRuntimeClasspath org.apache.calcite.avatica:avatica-metrics:1.25.0=jarValidation,testRuntimeClasspath diff --git a/solr/solrj-zookeeper/gradle.lockfile b/solr/solrj-zookeeper/gradle.lockfile index 916b3562fcf8..8993a7516acb 100644 --- a/solr/solrj-zookeeper/gradle.lockfile +++ b/solr/solrj-zookeeper/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeClas jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,testRuntimeClasspath,testRuntimeClasspathCopy javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna-platform:5.19.1=jarValidation,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna:5.19.1=jarValidation,testRuntimeClasspath,testRuntimeClasspathCopy org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-exec:1.6.0=jarValidation,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-lang3:3.20.0=jarValidation,testRuntimeClasspath,testRuntimeClasspathCopy diff --git a/solr/solrj/gradle.lockfile b/solr/solrj/gradle.lockfile index 3336889d484a..aff5bd3bdc88 100644 --- a/solr/solrj/gradle.lockfile +++ b/solr/solrj/gradle.lockfile @@ -79,6 +79,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,testRuntimeClasspath diff --git a/solr/test-framework/gradle.lockfile b/solr/test-framework/gradle.lockfile index b0ea8c4c29ae..3242465b8219 100644 --- a/solr/test-framework/gradle.lockfile +++ b/solr/test-framework/gradle.lockfile @@ -79,6 +79,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeClas jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy diff --git a/solr/webapp/gradle.lockfile b/solr/webapp/gradle.lockfile index a562330bd664..1f99e444fdf8 100644 --- a/solr/webapp/gradle.lockfile +++ b/solr/webapp/gradle.lockfile @@ -76,6 +76,8 @@ jakarta.validation:jakarta.validation-api:3.1.0=solrCore jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=solrCore jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=solrCore javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor +net.java.dev.jna:jna-platform:5.19.1=solrCore +net.java.dev.jna:jna:5.19.1=solrCore org.antlr:antlr4-runtime:4.13.2=solrCore org.apache.commons:commons-exec:1.6.0=solrCore org.apache.commons:commons-lang3:3.20.0=solrCore From 81786ba12281b948700a4a4bb20095cf876424af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Fri, 7 Aug 2026 15:46:47 +0200 Subject: [PATCH 2/8] Add changelog entry for GITHUB#4718 --- .../GITHUB#4718-jna-wmi-windows-process-list.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml diff --git a/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml b/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml new file mode 100644 index 000000000000..25b380fd0fcf --- /dev/null +++ b/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml @@ -0,0 +1,11 @@ +# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc + +title: > + SolrProcessManager now uses JNA/WMI to list Java processes on Windows, instead of spawning an + external PowerShell process +type: changed +authors: + - name: Jan Høydahl +links: + - name: GITHUB#4718 + url: https://github.com/apache/solr/pull/4718 From 18c7523fff4025c07bf63bca7c0958d95ce0b697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Sat, 22 Aug 2026 15:15:53 +0200 Subject: [PATCH 3/8] Push java filter into WQL query, per PR review Filter java processes with 'WHERE Name LIKE %java%' in the WMI query instead of checking the process name in the loop. WMI LIKE is case-insensitive, matching the previous behaviour. Thanks to @chan-dx for the suggestion and for validating it on Windows. --- .../src/java/org/apache/solr/cli/SolrProcessManager.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java b/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java index efcfcca656af..e51e6c92f9d0 100644 --- a/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java +++ b/solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java @@ -178,7 +178,6 @@ private static Optional commandLine(ProcessHandle ph) { */ enum ProcessProperty { PROCESSID, - NAME, COMMANDLINE } @@ -191,14 +190,12 @@ enum ProcessProperty { private static Map commandLinesWindows() { COMUtils.checkRC(Ole32.INSTANCE.CoInitializeEx(null, Ole32.COINIT_MULTITHREADED)); try { + // Filter to java processes in the WQL query itself; LIKE is case-insensitive in WMI, so this + // matches processes named e.g. "java.exe" while letting WMI do the filtering. WmiResult result = - new WmiQuery<>("Win32_Process", ProcessProperty.class).execute(); + new WmiQuery<>("Win32_Process WHERE Name LIKE '%java%'", ProcessProperty.class).execute(); Map pidToCommandLine = new HashMap<>(); for (int i = 0; i < result.getResultCount(); i++) { - Object name = result.getValue(ProcessProperty.NAME, i); - if (name == null || !name.toString().toLowerCase(Locale.ROOT).contains("java")) { - continue; - } Object commandLine = result.getValue(ProcessProperty.COMMANDLINE, i); Object processId = result.getValue(ProcessProperty.PROCESSID, i); // CommandLine can be null if the current user cannot read it for that process From bc8b2f5c5d49bb2e6885dfa3a6708f7364a0be33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Sun, 23 Aug 2026 14:40:21 +0200 Subject: [PATCH 4/8] Add missing *Copy configurations for jna in core lockfile The initial lockfile regeneration (resolveAndLockAll only) omitted the compileClasspathCopy/runtimeClasspathCopy/testCompileClasspathCopy/ testRuntimeClasspathCopy configurations that the jar-checks 'collectJarInfos' task resolves, causing CI to fail with 'Resolved net.java.dev.jna:jna(-platform) which is not part of the dependency lock state'. Regenerated with 'resolveAndLockAll collectJarInfos --write-locks' so the *Copy configurations are included. --- solr/core/gradle.lockfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solr/core/gradle.lockfile b/solr/core/gradle.lockfile index cf80863a9cd0..387ac1a7aaed 100644 --- a/solr/core/gradle.lockfile +++ b/solr/core/gradle.lockfile @@ -85,8 +85,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy net.bytebuddy:byte-buddy:1.18.11=jarValidation,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy -net.java.dev.jna:jna-platform:5.19.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.19.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy +net.java.dev.jna:jna:5.19.1=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-exec:1.6.0=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy org.apache.commons:commons-lang3:3.20.0=compileClasspath,compileClasspathCopy,jarValidation,runtimeClasspath,runtimeClasspathCopy,runtimeLibs,testCompileClasspath,testCompileClasspathCopy,testRuntimeClasspath,testRuntimeClasspathCopy From 5f72d30ee88b7292c2fe5c57fc0cae196a326d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Sun, 23 Aug 2026 17:30:11 +0200 Subject: [PATCH 5/8] Restore jna LICENSE and NOTICE files after merge SOLR-15465 (#4793) removed jna-LICENSE-ASL.txt and jna-NOTICE.txt on main since jna was not shipped there. This PR adds jna-platform to solr-core, making jna a shipped runtime dependency, so its LICENSE/NOTICE are required again. The merge dropped them; restore both. --- solr/licenses/jna-LICENSE-ASL.txt | 314 ++++++++++++++++++++++++++++++ solr/licenses/jna-NOTICE.txt | 26 +++ 2 files changed, 340 insertions(+) create mode 100644 solr/licenses/jna-LICENSE-ASL.txt create mode 100644 solr/licenses/jna-NOTICE.txt diff --git a/solr/licenses/jna-LICENSE-ASL.txt b/solr/licenses/jna-LICENSE-ASL.txt new file mode 100644 index 000000000000..d1f4d5cc0867 --- /dev/null +++ b/solr/licenses/jna-LICENSE-ASL.txt @@ -0,0 +1,314 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +EXTERNAL COMPONENTS + +Apache PDFBox includes a number of components with separate copyright notices +and license terms. Your use of these components is subject to the terms and +conditions of the following licenses. + +Contributions made to the original PDFBox project: + + Copyright (c) 2002-2007, www.pdfbox.org + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of pdfbox; nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +Adobe Font Metrics (AFM) for PDF Core 14 Fonts + + This file and the 14 PostScript(R) AFM files it accompanies may be used, + copied, and distributed for any purpose and without charge, with or without + modification, provided that all copyright notices are retained; that the + AFM files are not distributed without this file; that all modifications + to this file or any of the AFM files are prominently noted in the modified + file(s); and that this paragraph is not modified. Adobe Systems has no + responsibility or obligation to support the use of the AFM files. + +CMaps for PDF Fonts (http://opensource.adobe.com/wiki/display/cmap/Downloads) + + Copyright 1990-2009 Adobe Systems Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + Neither the name of Adobe Systems Incorporated nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +Glyphlist (http://www.adobe.com/devnet/opentype/archives/glyph.html) + + Copyright (c) 1997,1998,2002,2007 Adobe Systems Incorporated + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this documentation file to use, copy, publish, distribute, + sublicense, and/or sell copies of the documentation, and to permit + others to do the same, provided that: + - No modification, editing or other alteration of this document is + allowed; and + - The above copyright notice and this permission notice shall be + included in all copies of the documentation. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this documentation file, to create their own derivative works + from the content of this document to use, copy, publish, distribute, + sublicense, and/or sell the derivative works, and to permit others to do + the same, provided that the derived work is not represented as being a + copy or version of this document. + + Adobe shall not be liable to any party for any loss of revenue or profit + or for indirect, incidental, special, consequential, or other similar + damages, whether based on tort (including without limitation negligence + or strict liability), contract or other legal or equitable grounds even + if Adobe has been advised or had reason to know of the possibility of + such damages. The Adobe materials are provided on an "AS IS" basis. + Adobe specifically disclaims all express, statutory, or implied + warranties relating to the Adobe materials, including but not limited to + those concerning merchantability or fitness for a particular purpose or + non-infringement of any third party rights regarding the Adobe + materials. + diff --git a/solr/licenses/jna-NOTICE.txt b/solr/licenses/jna-NOTICE.txt new file mode 100644 index 000000000000..c5a025f0c3e6 --- /dev/null +++ b/solr/licenses/jna-NOTICE.txt @@ -0,0 +1,26 @@ +SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1 + +Java Native Access (JNA) is licensed under the LGPL, version 2.1 +or later, or (from version 4.0 onward) the Apache License, +version 2.0. + +You can freely decide which license you want to apply to the project. + +You may obtain a copy of the LGPL License at: + +http://www.gnu.org/licenses/licenses.html + +A copy is also included in the downloadable source code package +containing JNA, in file "LGPL2.1", under the same directory +as this file. + +You may obtain a copy of the Apache License at: + +http://www.apache.org/licenses/ + +A copy is also included in the downloadable source code package +containing JNA, in file "AL2.0", under the same directory +as this file. + +Commercial support may be available, please e-mail +twall[at]users[dot]sf[dot]net. From 54cf43d2c2e8d09bd774f9393591d75b472cce13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Mon, 21 Sep 2026 01:10:57 +0200 Subject: [PATCH 6/8] Use JNA's own Apache 2.0 license text for jna LICENSE/NOTICE --- solr/licenses/jna-LICENSE-ASL.txt | 137 ------------------------------ solr/licenses/jna-NOTICE.txt | 2 +- 2 files changed, 1 insertion(+), 138 deletions(-) diff --git a/solr/licenses/jna-LICENSE-ASL.txt b/solr/licenses/jna-LICENSE-ASL.txt index d1f4d5cc0867..f433b1a53f5b 100644 --- a/solr/licenses/jna-LICENSE-ASL.txt +++ b/solr/licenses/jna-LICENSE-ASL.txt @@ -175,140 +175,3 @@ of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -EXTERNAL COMPONENTS - -Apache PDFBox includes a number of components with separate copyright notices -and license terms. Your use of these components is subject to the terms and -conditions of the following licenses. - -Contributions made to the original PDFBox project: - - Copyright (c) 2002-2007, www.pdfbox.org - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of pdfbox; nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -Adobe Font Metrics (AFM) for PDF Core 14 Fonts - - This file and the 14 PostScript(R) AFM files it accompanies may be used, - copied, and distributed for any purpose and without charge, with or without - modification, provided that all copyright notices are retained; that the - AFM files are not distributed without this file; that all modifications - to this file or any of the AFM files are prominently noted in the modified - file(s); and that this paragraph is not modified. Adobe Systems has no - responsibility or obligation to support the use of the AFM files. - -CMaps for PDF Fonts (http://opensource.adobe.com/wiki/display/cmap/Downloads) - - Copyright 1990-2009 Adobe Systems Incorporated. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - Neither the name of Adobe Systems Incorporated nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. - -Glyphlist (http://www.adobe.com/devnet/opentype/archives/glyph.html) - - Copyright (c) 1997,1998,2002,2007 Adobe Systems Incorporated - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this documentation file to use, copy, publish, distribute, - sublicense, and/or sell copies of the documentation, and to permit - others to do the same, provided that: - - No modification, editing or other alteration of this document is - allowed; and - - The above copyright notice and this permission notice shall be - included in all copies of the documentation. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this documentation file, to create their own derivative works - from the content of this document to use, copy, publish, distribute, - sublicense, and/or sell the derivative works, and to permit others to do - the same, provided that the derived work is not represented as being a - copy or version of this document. - - Adobe shall not be liable to any party for any loss of revenue or profit - or for indirect, incidental, special, consequential, or other similar - damages, whether based on tort (including without limitation negligence - or strict liability), contract or other legal or equitable grounds even - if Adobe has been advised or had reason to know of the possibility of - such damages. The Adobe materials are provided on an "AS IS" basis. - Adobe specifically disclaims all express, statutory, or implied - warranties relating to the Adobe materials, including but not limited to - those concerning merchantability or fitness for a particular purpose or - non-infringement of any third party rights regarding the Adobe - materials. - diff --git a/solr/licenses/jna-NOTICE.txt b/solr/licenses/jna-NOTICE.txt index c5a025f0c3e6..9d95afbeb58a 100644 --- a/solr/licenses/jna-NOTICE.txt +++ b/solr/licenses/jna-NOTICE.txt @@ -1,4 +1,4 @@ -SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1 +SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later Java Native Access (JNA) is licensed under the LGPL, version 2.1 or later, or (from version 4.0 onward) the Apache License, From 2d729f2afcc2bae09807612b3e679d174f1d4716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Mon, 21 Sep 2026 01:12:47 +0200 Subject: [PATCH 7/8] Regenerate lockfiles after merge --- solr/core/gradle.lockfile | 2 ++ solr/modules/jwt-auth/gradle.lockfile | 2 ++ solr/modules/s3-repository/gradle.lockfile | 3 ++- solr/solrj-zookeeper/gradle.lockfile | 2 ++ solr/test-framework/gradle.lockfile | 2 ++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/solr/core/gradle.lockfile b/solr/core/gradle.lockfile index ae79bf6cb4ca..f9a7268f7143 100644 --- a/solr/core/gradle.lockfile +++ b/solr/core/gradle.lockfile @@ -84,6 +84,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.11=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/jwt-auth/gradle.lockfile b/solr/modules/jwt-auth/gradle.lockfile index f2d58a079437..662bc1df645f 100644 --- a/solr/modules/jwt-auth/gradle.lockfile +++ b/solr/modules/jwt-auth/gradle.lockfile @@ -93,6 +93,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.11=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath net.minidev:accessors-smart:2.6.0=jarValidation,testCompileClasspath,testRuntimeClasspath net.minidev:json-smart:2.6.0=jarValidation,testCompileClasspath,testRuntimeClasspath no.nav.security:mock-oauth2-server:6.0.2=jarValidation,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/s3-repository/gradle.lockfile b/solr/modules/s3-repository/gradle.lockfile index 1381f8bdcbbd..6aa6deba084c 100644 --- a/solr/modules/s3-repository/gradle.lockfile +++ b/solr/modules/s3-repository/gradle.lockfile @@ -82,7 +82,8 @@ jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runti javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.11=jarValidation,testCompileClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.apache.commons:commons-compress:1.28.0=jarValidation,testCompileClasspath,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/solrj-zookeeper/gradle.lockfile b/solr/solrj-zookeeper/gradle.lockfile index 6bc5794cca54..2f1adaadda38 100644 --- a/solr/solrj-zookeeper/gradle.lockfile +++ b/solr/solrj-zookeeper/gradle.lockfile @@ -77,6 +77,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,testRuntime jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,testRuntimeClasspath diff --git a/solr/test-framework/gradle.lockfile b/solr/test-framework/gradle.lockfile index 309368d720ec..0ee7e132ac91 100644 --- a/solr/test-framework/gradle.lockfile +++ b/solr/test-framework/gradle.lockfile @@ -78,6 +78,8 @@ jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,testRuntime jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,testRuntimeClasspath javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor junit:junit:4.13.2=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.19.1=jarValidation,runtimeClasspath,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,runtimeClasspath,testRuntimeClasspath org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,testRuntimeClasspath org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,testRuntimeClasspath org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,testRuntimeClasspath From c0d81486be564d57cc78d55510ecac6d16642003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Wed, 7 Oct 2026 15:17:01 +0200 Subject: [PATCH 8/8] Credit Chan Chan for reviewing --- .../unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml b/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml index 25b380fd0fcf..a5d7b0e7b4a8 100644 --- a/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml +++ b/changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml @@ -6,6 +6,8 @@ title: > type: changed authors: - name: Jan Høydahl + - name: Chan Chan + nick: chan-dx links: - name: GITHUB#4718 url: https://github.com/apache/solr/pull/4718