SonarSource/sonarqube · error · IllegalArgumentException
Param {paramKey} was not provided.
Error message
Param {paramKey} was not provided. What it means
SonarLintPushAction.parseParam fetches a request parameter and throws IllegalArgumentException 'Param {paramKey} was not provided.' when the value is null. It backs the params validation of the SonarLint push endpoint (called via SonarLintPushActionParamsValidator).
Source
Thrown at server/sonar-webserver-pushapi/src/main/java/org/sonar/server/pushapi/sonarlint/SonarLintPushAction.java:129
private final Request request;
private final Set<String> projectKeys;
private final Set<String> languages;
SonarLintPushActionParamsValidator(Request request) {
this.request = request;
this.projectKeys = parseParam(PROJECT_PARAM_KEY);
this.languages = parseParam(LANGUAGE_PARAM_KEY);
}
Set<String> getLanguages() {
return languages;
}
private Set<String> parseParam(String paramKey) {
String paramProjectKeys = request.getParam(paramKey).getValue();
if (paramProjectKeys == null) {
throw new IllegalArgumentException("Param " + paramKey + " was not provided.");
}
return Set.of(paramProjectKeys.trim().split(","));
}
private void validateParams() {
List<ProjectDto> projectDtos;
try (DbSession dbSession = dbClient.openSession(false)) {
projectDtos = dbClient.projectDao().selectProjectsByKeys(dbSession, projectKeys);
}
if (projectDtos.size() < projectKeys.size() || projectDtos.isEmpty()) {
throw new IllegalArgumentException("Param " + PROJECT_PARAM_KEY + " is invalid.");
}
}
}
}
View on GitHub (pinned to 184c821202)
Solutions
- Include the required projectKeys parameter in the request (comma-separated project keys).
- Update the SonarLint client to a version that sends the parameter.
- Check for proxy/gateway layers stripping query or body params.
Example fix
// before GET /api/sonarlint/push_events?languages=java // after GET /api/sonarlint/push_events?projectKeys=my-project&languages=java
Defensive patterns
Strategy: validation
Validate before calling
if (projectKeys == null || projectKeys.isEmpty()) {
throw new IllegalArgumentException("projectKeys is required");
} Try / catch
try { pushAction.validateParams(); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith("Param ") && e.getMessage().contains("was not provided")) { /* add missing param */ } } Prevention
- Always send projectKeys on the SonarLint push endpoint
- Build request URLs from a checked parameter map
- Update SonarLint clients when the WS contract changes
When it happens
Trigger: Calling the sonarlint push WS without the required 'projectKeys' (or other expected) parameter, so request.getParam(paramKey).getValue() returns null. Note getValue() returning empty string is NOT caught here — only null.
Common situations: API clients omitting projectKeys in the push-event request; query strings stripped by proxies; SDK versions of SonarLint that no longer send the param.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- User does not exist
- User doesn't have rights to requested resource anymore.
- Param projectKeys is invalid.
- %s is not a valid url
- Error while executing a call to %s. Return code %s. Error me
AI-assisted analysis of SonarSource/sonarqube@184c821202 (2026-09-09).
Data as JSON: /api/errors/d76c889af7951934.
Report an issue: GitHub.