{"record":{"id":"48c9e2404374f5f9","repo":"pinpoint-apm/pinpoint","slug":"invalid-idkey-name-length","errorCode":null,"errorMessage":"Invalid +idKey.name()+.length","messagePattern":"Invalid \\+idKey\\.name\\(\\)\\+\\.length","errorType":"validation","errorClass":"InvalidGrpcHeaderException","httpStatus":null,"severity":"error","filePath":"grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java","lineNumber":77,"sourceCode":"        if (id == null) {\n            throw new InvalidGrpcHeaderException(idKey, idKey.name() + \" header is missing\");\n        }\n        return validateId(id, idKey);\n    }\n\n    public String getName(Metadata headers, Metadata.Key<String> idKey) {\n        return getName(headers, idKey, this.nameMaxLength);\n    }\n\n    public String getName(Metadata headers, Metadata.Key<String> idKey, int maxNameLength) {\n        final String name = headers.get(idKey);\n        if (!StringUtils.isEmpty(name)) {\n            final IdValidateUtils.CheckResult result = IdValidateUtils.checkId(name, defaultLength(maxNameLength, this.nameMaxLength));\n            if (result == IdValidateUtils.CheckResult.FAIL_PATTERN) {\n                throw new InvalidGrpcHeaderException(idKey, \"Invalid \" + idKey.name());\n            }\n            if (result == IdValidateUtils.CheckResult.FAIL_LENGTH) {\n                throw new InvalidGrpcHeaderException(idKey, \"Invalid \" + idKey.name() + \".length\");\n            }\n        }\n        return name;\n    }\n\n    private int defaultLength(int length, int defaultValue) {\n        if (length != UNSPECIFIED_LENGTH) {\n            return length;\n        }\n        return defaultValue;\n    }\n\n    public long getSocketId(Metadata headers) {\n        final String socketIdStr = headers.get(Header.SOCKET_ID);\n        if (socketIdStr == null) {\n            return Header.SOCKET_ID_NOT_EXIST;\n        }\n        try {","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java#L59-L95","documentation":"Thrown by HeaderExtractor.getName (via IdValidateUtils.checkId) when the agent-name gRPC header exceeds the configured maximum name length. The header exists and is non-empty, but its value fails length validation against nameMaxLength (defaulting to PinpointConstants.AGENT_NAME_MAX_LEN), so the header content is rejected rather than silently truncated. The input at fault is an overly long agentName header value; clients must keep the name within the protocol's length limit.","triggerScenarios":"Thrown at grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java:77 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Shorten the agent/application name to fit PinpointConstants.AGENT_NAME_MAX_LEN","Raise the nameMaxLength limit on both collector and agent sides consistently"],"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-14T05:17:10.506Z"}