Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions changelog/unreleased/GITHUB#4718-jna-wmi-windows-process-list.yml
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
Expand Down
6 changes: 4 additions & 2 deletions gradle/testing/randomization/policies/solr-tests.policy
Original file line number Diff line number Diff line change
Expand Up @@ -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 "<<ALL FILES>>", "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.
Expand Down
2 changes: 2 additions & 0 deletions solr/api/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/benchmark/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions solr/core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/core/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
82 changes: 37 additions & 45 deletions solr/core/src/java/org/apache/solr/cli/SolrProcessManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand All @@ -174,55 +173,48 @@ private static Optional<String> 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<Long, String> 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<ProcessProperty> result =
new WmiQuery<>("Win32_Process", ProcessProperty.class).execute();
Map<Long, String> 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<Long, String> parseWindowsPidToCommandLineJson(String jsonString)
throws JsonProcessingException {
// Json format: [{"ProcessId": 1234, "CommandLine": "java foo"}]
ObjectMapper mapper = new ObjectMapper();
List<WindowsProcessInfo> 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.
*
Expand Down
11 changes: 0 additions & 11 deletions solr/core/src/test/org/apache/solr/cli/SolrProcessManagerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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<Long, String> 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.
Expand Down
2 changes: 2 additions & 0 deletions solr/cross-dc-manager/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions solr/licenses/jna-platform-5.19.1.jar.sha1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d1e54d9231da5ca3fa730d52960deaa555475468
2 changes: 2 additions & 0 deletions solr/modules/analysis-extras/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/modules/clustering/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/modules/cross-dc/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/modules/cuvs/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion solr/modules/extraction/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/modules/gcs-repository/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/modules/jwt-auth/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions solr/modules/langid/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading
Loading