{"record":{"id":"e859734af2d79321","repo":"pinpoint-apm/pinpoint","slug":"invalid-key-name","errorCode":null,"errorMessage":"Invalid +key.name()","messagePattern":"Invalid \\+key\\.name\\(\\)","errorType":"validation","errorClass":"InvalidGrpcHeaderException","httpStatus":null,"severity":"error","filePath":"grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java","lineNumber":137,"sourceCode":"                supportCommandCodeList.add(code);\n            }\n            return supportCommandCodeList;\n        } catch (NumberFormatException e) {\n            return Header.SUPPORT_COMMAND_CODE_LIST_PARSE_ERROR;\n        }\n    }\n\n    public boolean getGrpcBuiltInRetry(Metadata headers) {\n        final String value = headers.get(Header.GRPC_BUILT_IN_RETRY);\n        if (value != null) {\n            return Boolean.parseBoolean(value);\n        }\n        return Header.DEFAULT_GRPC_BUILT_IN_RETRY;\n    }\n\n    String validateId(String id, Metadata.Key<?> key) {\n        if (!IdValidateUtils.validateId(id, idMaxLength)) {\n            throw new InvalidGrpcHeaderException(key, \"Invalid \" + key.name());\n        }\n        return id;\n    }\n\n    public int getServiceType(Metadata headers) {\n        final String serviceTypeStr = headers.get(Header.SERVICE_TYPE_KEY);\n        if (serviceTypeStr == null) {\n            return ServiceType.UNDEFINED.getCode();\n        }\n        try {\n            return Integer.parseInt(serviceTypeStr);\n        } catch (NumberFormatException ignored) {\n            return ServiceType.UNDEFINED.getCode();\n        }\n    }\n}\n","sourceCodeStart":119,"sourceCodeEnd":154,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java#L119-L154","documentation":"InvalidGrpcHeaderException from HeaderExtractor.validateId: an id header value fails IdValidateUtils.validate (bad characters, empty string, or over-length id), so the agent id is rejected before use.","triggerScenarios":"Thrown at grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use ids composed of allowed characters within AGENT_ID_MAX_LEN","Regenerate the agent id if it contains whitespace or special characters","Mirror the same validation rules on the agent side before sending"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}