{"record":{"id":"3123f5c49c371d2b","repo":"nathanmarz/storm","slug":"field-does-not-exist","errorCode":null,"errorMessage":"${field} does not exist","messagePattern":"(.+?) does not exist","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"storm-core/src/jvm/backtype/storm/tuple/Fields.java","lineNumber":78,"sourceCode":"    public int size() {\n        return _fields.size();\n    }\n\n    public String get(int index) {\n        return _fields.get(index);\n    }\n\n    public Iterator<String> iterator() {\n        return _fields.iterator();\n    }\n    \n    /**\n     * Returns the position of the specified field.\n     */\n    public int fieldIndex(String field) {\n        Integer ret = _index.get(field);\n        if(ret==null) {\n            throw new IllegalArgumentException(field + \" does not exist\");\n        }\n        return ret;\n    }\n    \n    /**\n     * Returns true if this contains the specified name of the field.\n     */\n    public boolean contains(String field) {\n        return _index.containsKey(field);\n    }\n    \n    private void index() {\n        for(int i=0; i<_fields.size(); i++) {\n            _index.put(_fields.get(i), i);\n        }\n    }\n\n    @Override","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/nathanmarz/storm/blob/cdb116e942666973bc4eaa0df098d5bab82739e7/storm-core/src/jvm/backtype/storm/tuple/Fields.java#L60-L96","documentation":"Thrown by Fields.fieldIndex(String) when the requested field name is not present in this Fields object's declared output/declare fields. It fires whenever tuple component code (e.g. emit anchoring, grouping, or projection) looks up a positional index for a field name that was never declared, meaning the caller and the declared stream schema are out of sync.","triggerScenarios":"Thrown at storm-core/src/jvm/backtype/storm/tuple/Fields.java:78 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check that the field name passed to fieldIndex is spelled exactly as declared in the stream's Fields declaration (case-sensitive).","Verify the component is operating on the correct stream; each stream has its own declared fields.","If the field was recently added or renamed, update both the topology declaration and all consumers that look it up.","Guard lookups with Fields.contains(field) (or select()) before calling fieldIndex when the field may legitimately be absent."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cdb116e942666973bc4eaa0df098d5bab82739e7","analyzedAt":"2026-09-12T14:30:00.714Z","contentChangedAt":"2026-09-12T14:30:00.714Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}