{"record":{"id":"d090b437e2a535fa","repo":"jruby/jruby","slug":"duplicate-channels-in-reaction","errorCode":null,"errorMessage":"Duplicate channels in reaction","messagePattern":"Duplicate channels in reaction","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/jruby/util/Join.java","lineNumber":131,"sourceCode":"            for ( int i = 0 ; i < channels.length ; ++i ) {\n                indices[i+1] = channels[i].ordinal();\n            }\n            return indices;\n        }\n\n        Reaction(Enum<?> head, Enum<?>[] channels, boolean isAsync) {\n            this(toIndices(head, channels), isAsync);\n        }\n\n        Reaction(int[] indices, boolean isAsync) {\n            long mask = 0;\n            for ( int i = 0 ; i < indices.length ; ++i ) {\n                final int index = indices[i];\n                if ( index < 0 || index > 63 ) {\n                    throw new IndexOutOfBoundsException();\n                }\n                if ( ( mask & ( 1L << index ) ) != 0 ) {\n                    throw new IllegalArgumentException(\"Duplicate channels in reaction\");\n                }\n                mask |= 1L << index;\n            }\n            this.indices = indices;\n            this.mask = mask;\n            if (isAsync) {\n                this.asyncMask = mask;\n            } else {\n                this.asyncMask = mask & ~( 1L << indices[0] );\n            }\n        }\n\n        abstract void dispatch(Join join, Object[] args);\n    }\n\n    public static abstract class FastReaction extends Reaction {\n        public FastReaction(int[] indices) {\n            super(indices.clone(), true);","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/jruby/jruby/blob/fb650c13e02b5a600fa66384655069d5ec30c362/core/src/main/java/org/jruby/util/Join.java#L113-L149","documentation":"Error \"Duplicate channels in reaction\" thrown in jruby/jruby.","triggerScenarios":"Thrown at core/src/main/java/org/jruby/util/Join.java:131 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The same channel was registered twice in one join reaction. Remove the duplicate channel from the reaction definition."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fb650c13e02b5a600fa66384655069d5ec30c362","analyzedAt":"2026-08-23T07:18:57.479Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}