google/tsunami-security-scanner · error · ParameterException
Number of remote plugin server paths must be equal to…
Error message
Number of remote plugin server paths must be equal to number of plugin server ports. Addresses: %s. Ports: %s.
What it means
Remote plugin servers are configured as address/port pairs, so validate() requires remotePluginServerAddress.size() == remotePluginServerPort.size(). A count mismatch makes pairing impossible and throws this ParameterException.
Solutions
- Supply matching counts of --remote-plugin-server-address and --remote-plugin-server-port, in the same order.
- Audit your launch script so each remote server adds both an address and a port flag.
- Generate the flags from a single list of {address, port} pairs to keep them in sync.
Example fix
// before --remote-plugin-server-address=host1 --remote-plugin-server-address=host2 --remote-plugin-server-port=20000 // after --remote-plugin-server-address=host1 --remote-plugin-server-address=host2 --remote-plugin-server-port=20000 --remote-plugin-server-port=20001
Defensive patterns
Strategy: validation
Validate before calling
if (addresses.size() != ports.size()) { throw new IllegalStateException("remote address/port count mismatch"); } Try / catch
try { options.validate(); } catch (ParameterException e) { log.error("Remote server pairing mismatch: {}", e.getMessage()); } Prevention
- Define remote servers as {address, port} pairs and generate flags from that list.
- Update address and port flags together per server.
- Override environment-specific configs as whole pairs, not individual lists.
When it happens
Trigger: Running Tsunami with --remote-plugin-server-address entries but a different number of --remote-plugin-server-port entries, or omitting one of the two lists.
Common situations: Registering a new remote plugin server and updating only its address (or only its port), or environment-specific configs where one list is overridden per environment and the other is not.
Understand the failure class
Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.
Related errors
- Number of plugin server paths must be equal to number of…
- Number of plugin server rpc deadlines must be equal to…
- Language server path
- Port out of range. Expected
- Port number must be an integer. Got
AI-assisted analysis of google/tsunami-security-scanner@363ba87b35 (2026-09-13).
Data as JSON: /api/errors/f19076f645f6aba8.
Report an issue: GitHub.
Appendix: source
Thrown at main/src/main/java/com/google/tsunami/main/cli/LanguageServerOptions.java:120
pathCounts, portCounts));
}
if (!pluginServerRpcDeadlineSeconds.isEmpty()) {
if (pluginServerRpcDeadlineSeconds.size() != pathCounts) {
throw new ParameterException(
String.format(
"Number of plugin server rpc deadlines must be equal to number of plugin server"
+ " ports. Paths: %s. Ports: %s. Deadlines: %s",
pathCounts, portCounts, pluginServerRpcDeadlineSeconds.size()));
}
}
}
if (!remotePluginServerAddress.isEmpty()) {
var addrCounts = remotePluginServerAddress.size();
var portCounts = remotePluginServerPort.size();
if (addrCounts != portCounts) {
throw new ParameterException(
String.format(
"Number of remote plugin server paths must be equal to number of plugin server "
+ "ports. Addresses: %s. Ports: %s.",
addrCounts, portCounts));
}
if (!remotePluginServerRpcDeadlineSeconds.isEmpty()) {
if (remotePluginServerRpcDeadlineSeconds.size() != addrCounts) {
throw new ParameterException(
String.format(
"Number of plugin server rpc deadlines must be equal to number of plugin server"
+ " ports. Paths: %s. Ports: %s. Deadlines: %s",
addrCounts, portCounts, pluginServerRpcDeadlineSeconds.size()));
}
}
for (int port : remotePluginServerPort) {
if (!(port <= NetworkEndpointUtils.MAX_PORT_NUMBER && port > 0)) {View on GitHub (pinned to 363ba87b35)