{"record":{"id":"0f7d9fb9f4b0e03e","repo":"quarkusio/quarkus","slug":"cannot-combine-withlabels-and-selected-labels","errorCode":null,"errorMessage":"Cannot combine `WITHLABELS` and `SELECTED_LABELS`","messagePattern":"Cannot combine `WITHLABELS` and `SELECTED_LABELS`","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/redis-client/runtime/src/main/java/io/quarkus/redis/datasource/timeseries/MRangeArgs.java","lineNumber":232,"sourceCode":"            list.add(\"FILTER_BY_TS\");\n            for (Long ts : filterByTimestamps) {\n                list.add(Long.toString(ts));\n            }\n        }\n\n        if (filterByValue) {\n            list.add(\"FILTER_BY_VALUE\");\n            list.add(Double.toString(min)); // TODO Check format\n            list.add(Double.toString(max));\n        }\n\n        if (withLabels) {\n            list.add(\"WITHLABELS\");\n        }\n\n        if (selectedLabels != null && selectedLabels.length != 0) {\n            if (withLabels) {\n                throw new IllegalArgumentException(\"Cannot combine `WITHLABELS` and `SELECTED_LABELS`\");\n            }\n\n            list.add(\"SELECTED_LABELS\");\n            list.addAll(Arrays.asList(selectedLabels));\n        }\n\n        if (count != -1) {\n            list.add(\"COUNT\");\n            list.add(Integer.toString(count));\n        }\n\n        if (aggregation != null) {\n            if (align != null) {\n                list.add(\"ALIGN\");\n                list.add(align);\n            }\n\n            list.add(\"AGGREGATION\");","sourceCodeStart":214,"sourceCodeEnd":250,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/datasource/timeseries/MRangeArgs.java#L214-L250","documentation":"MRangeArgs.toArgs() serializes TS_MRANGE options. RedisTimeSeries does not allow WITHLABELS together with SELECTED_LABELS, so the builder throws when both were set on the same instance. Like error 1732 but on MRangeArgs; the failure surfaces when the command is built, not when the setters ran.","triggerScenarios":"Calling mrangeArgs.withLabels() (withLabels flag set) and also .selectedLabels(\"x\",\"y\") on the same instance before toArgs() executes.","commonSituations":"Merging argument-building code paths that each set one option; reusing a cached args object; documentation examples mixing the two options.","solutions":["Drop selectedLabels(...) to request all labels via WITHLABELS","Drop withLabels() and keep only the SELECTED_LABELS list","Refactor the builder flow into exclusive branches so both flags can never be set together"],"exampleFix":"// before\nMRangeArgs args = MRangeArgs.Builder.getInstance()\n    .withLabels()\n    .selectedLabels(\"region\", \"rack\");\n// after\nMRangeArgs args = MRangeArgs.Builder.getInstance()\n    .selectedLabels(\"region\", \"rack\");","handlingStrategy":"validation","validationCode":"if (withLabels && selectedLabels != null && selectedLabels.length > 0) {\n    throw new IllegalArgumentException(\"WITHLABELS and SELECTED_LABELS are mutually exclusive\");\n}","typeGuard":"boolean argsValid(boolean withLabels, String... selectedLabels) {\n    return !(withLabels && selectedLabels != null && selectedLabels.length > 0);\n}","tryCatchPattern":"try {\n    redis.ts().mrange(args);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"SELECTED_LABELS\")) {\n        args = MRangeArgs.Builder.getInstance().selectedLabels(labels);\n    }\n}","preventionTips":["Choose WITHLABELS or SELECTED_LABELS up front based on the query's needs","Avoid reusing/mutating shared MRangeArgs instances across different queries","Centralize MRangeArgs construction in one helper method"],"tags":["java","redis","redis-timeseries","mutually-exclusive-arguments"],"backgroundTag":"incompatible-argument-combination","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}