{"record":{"id":"7d47199933b4737c","repo":"elastic/elasticsearch","slug":"invalid-increment-must-be-a-positive-integer","errorCode":null,"errorMessage":"Invalid increment {}, must be a positive integer","messagePattern":"Invalid increment (.+?), must be a positive integer","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/AbstractGenerateTransportVersionDefinitionTask.java","lineNumber":113,"sourceCode":"            targetUpperBoundNames,\n            idsByBase,\n            targetDefinitionName\n        );\n        // (Re)write the definition file.\n        resources.writeDefinition(new TransportVersionDefinition(targetDefinitionName, ids, true));\n    }\n\n    private List<TransportVersionId> updateUpperBounds(\n        TransportVersionResourcesService resources,\n        List<TransportVersionUpperBound> existingUpperBounds,\n        Set<String> targetUpperBoundNames,\n        Map<Integer, List<IdAndDefinition>> idsByBase,\n        String definitionName\n    ) throws IOException {\n        String currentUpperBoundName = getCurrentUpperBoundName().get();\n        int increment = getIncrement().get();\n        if (increment <= 0) {\n            throw new IllegalArgumentException(\"Invalid increment \" + increment + \", must be a positive integer\");\n        }\n        if (increment > 1000) {\n            throw new IllegalArgumentException(\"Invalid increment \" + increment + \", must be no larger than 1000\");\n        }\n        List<TransportVersionId> ids = new ArrayList<>();\n\n        TransportVersionDefinition existingDefinition = resources.getReferableDefinitionFromGitBase(definitionName);\n        for (TransportVersionUpperBound existingUpperBound : existingUpperBounds) {\n            String upperBoundName = existingUpperBound.name();\n\n            if (targetUpperBoundNames.contains(upperBoundName)) {\n                // Case: targeting this upper bound, find an existing id if it exists\n                TransportVersionId targetId = maybeGetExistingId(existingUpperBound, existingDefinition, definitionName);\n                if (targetId == null) {\n                    // Case: an id doesn't yet exist for this upper bound, so create one\n                    int targetIncrement = upperBoundName.equals(currentUpperBoundName) ? increment : 1;\n                    targetId = createTargetId(existingUpperBound, targetIncrement);\n                    var newUpperBound = new TransportVersionUpperBound(upperBoundName, definitionName, targetId);","sourceCodeStart":95,"sourceCodeEnd":131,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/AbstractGenerateTransportVersionDefinitionTask.java#L95-L131","documentation":"IllegalArgumentException from updateUpperBounds() when the increment value configured for transport-version generation is zero or negative. The task requires a strictly positive integer increment.","triggerScenarios":"getIncrement().get() returns a value <= 0 because the --increment option was omitted and defaulted to 0, or was explicitly passed as 0/negative.","commonSituations":"Running the generate-transport-version-definition task without setting --increment; a wrapper script passing an empty/defaulted value; misreading the option as 1-based vs 0-based.","solutions":["Pass a positive integer for --increment (e.g. --increment=1).","If invoking programmatically, set the increment property to a value > 0 before the task runs.","Check the task's default value configuration in build.gradle and supply a sane default."],"exampleFix":"// before: ./gradlew generateTransportVersionDefinition --increment=0\n// after:  ./gradlew generateTransportVersionDefinition --increment=1","handlingStrategy":"validation","validationCode":"int increment = getIncrement().get();\nif (increment <= 0) {\n    throw new IllegalArgumentException(\"--increment must be a positive integer, got \" + increment);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass --increment explicitly when running the task.","Default the increment property to a sensible positive value in build.gradle.","Validate CLI args in a wrapper script before delegating to Gradle."],"tags":["transport-version","validation","build-tooling","configuration"],"backgroundTag":null,"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}