pinpoint-apm/pinpoint · error · InvalidGrpcHeaderException

Invalid +idKey.name()+.length

Error message

Invalid +idKey.name()+.length

What it means

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.

Source

Thrown at grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java:77

        if (id == null) {
            throw new InvalidGrpcHeaderException(idKey, idKey.name() + " header is missing");
        }
        return validateId(id, idKey);
    }

    public String getName(Metadata headers, Metadata.Key<String> idKey) {
        return getName(headers, idKey, this.nameMaxLength);
    }

    public String getName(Metadata headers, Metadata.Key<String> idKey, int maxNameLength) {
        final String name = headers.get(idKey);
        if (!StringUtils.isEmpty(name)) {
            final IdValidateUtils.CheckResult result = IdValidateUtils.checkId(name, defaultLength(maxNameLength, this.nameMaxLength));
            if (result == IdValidateUtils.CheckResult.FAIL_PATTERN) {
                throw new InvalidGrpcHeaderException(idKey, "Invalid " + idKey.name());
            }
            if (result == IdValidateUtils.CheckResult.FAIL_LENGTH) {
                throw new InvalidGrpcHeaderException(idKey, "Invalid " + idKey.name() + ".length");
            }
        }
        return name;
    }

    private int defaultLength(int length, int defaultValue) {
        if (length != UNSPECIFIED_LENGTH) {
            return length;
        }
        return defaultValue;
    }

    public long getSocketId(Metadata headers) {
        final String socketIdStr = headers.get(Header.SOCKET_ID);
        if (socketIdStr == null) {
            return Header.SOCKET_ID_NOT_EXIST;
        }
        try {

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Shorten the agent/application name to fit PinpointConstants.AGENT_NAME_MAX_LEN
  2. Raise the nameMaxLength limit on both collector and agent sides consistently
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at grpc/src/main/java/com/navercorp/pinpoint/grpc/server/HeaderExtractor.java:77 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/48c9e2404374f5f9. Report an issue: GitHub.