{"record":{"id":"7af18213c0062636","repo":"pinpoint-apm/pinpoint","slug":"failed-to-request-header","errorCode":null,"errorMessage":"Failed to request. {} header={}","messagePattern":"Failed to request\\. (.+?) header=(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"collector/src/main/java/com/navercorp/pinpoint/collector/receiver/grpc/service/JobRunner.java","lineNumber":46,"sourceCode":"    }\n\n    public <Req, Res> void execute(MessageType messageType,\n                                   Req req, StreamObserver<Res> responseObserver,\n                                   BiConsumer<ServerRequest<Req>, ServerResponse<Res>> job) {\n        Context current = Context.current();\n        ServerRequest<Req> request = requestFactory.newServerRequest(current, messageType, req);\n        ServerResponse<Res> response = responseFactory.newServerResponse(request, responseObserver);\n        try {\n            job.accept(request, response);\n        } catch (Throwable e) {\n            handleException(request, response, e);\n        }\n    }\n\n    protected <Req, Res> void handleException(ServerRequest<Req> request, ServerResponse<Res> response, Throwable th) {\n        MessageType messageType = request.getMessageType();\n        ServerHeader header = request.getHeader();\n        logger.warn(\"Failed to request. {} header={}\", messageType, header, th);\n        response.onError(th);\n    }\n\n}\n","sourceCodeStart":28,"sourceCodeEnd":51,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/collector/src/main/java/com/navercorp/pinpoint/collector/receiver/grpc/service/JobRunner.java#L28-L51","documentation":"Generic warning logged by Pinpoint collector's gRPC JobRunner when an exception escapes handling of a server request. The actual failure cause is the attached Throwable 'th'; the log message itself only carries the message type and header. It wraps whatever went wrong while processing a job-style gRPC request and then propagates the error via response.onError(th).","triggerScenarios":"Any Throwable thrown during execute() of a JobRunner-managed gRPC server request, e.g. handler bugs, deserialization failures, or downstream component errors inside the handler.","commonSituations":"Agent sends a malformed or unexpected gRPC message; collector-side handler throws due to internal errors (DB unavailable, serialization mismatch) after a Pinpoint version upgrade; network/client aborts mid-request.","solutions":["Inspect the full stack trace logged as the third argument (th) to find the root cause","Check collector logs for the messageType shown in the log to identify which handler failed","Verify collector-to-storage (e.g. HBase) connectivity if the handler persists data","Confirm agent and collector protocol versions are compatible"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    jobRunner.execute(request, response);\n} catch (Throwable th) {\n    logger.warn(\"Failed to request. {} header={}\", request.getMessageType(), request.getHeader(), th);\n    // inspect th for root cause; do not silently swallow\n}","preventionTips":["Always read the third log argument (Throwable) — the message text itself is uninformative","Monitor collector logs for this warning and alert on spikes per messageType","Keep agent and collector protocol versions aligned","Test handler code against malformed gRPC payloads"],"tags":["grpc","collector","logging","pinpoint"],"backgroundTag":"api-request-failed","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"}