pinpoint-apm/pinpoint · error · RuntimeException

RuntimeException wrapping Exception from getRawStatusCode

Error message

RuntimeException wrapping Exception from getRawStatusCode

What it means

Guard in Spring5HttpStatusProvider.getStatusCode: reading the raw status code from a reactive ClientHttpResponse threw a generic Exception (e.g. response already consumed or connection error in WebFlux); the provider wraps it in a RuntimeException to surface the failure at the interceptor.

Solutions

  1. Inspect the wrapped cause exception for the real failure
  2. Ensure the response is read before the reactive stream is consumed/cancelled
  3. Upgrade the spring-webflux plugin if hitting a known race reading raw status
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at agent-module/plugins/spring-webflux/src/main/java/com/navercorp/pinpoint/plugin/spring/webflux/interceptor/util/Spring5HttpStatusProvider.java:31 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/26b024bb31fca1d4. Report an issue: GitHub.

Appendix: source

Thrown at agent-module/plugins/spring-webflux/src/main/java/com/navercorp/pinpoint/plugin/spring/webflux/interceptor/util/Spring5HttpStatusProvider.java:31

 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.navercorp.pinpoint.plugin.spring.webflux.interceptor.util;

import org.springframework.http.client.reactive.ClientHttpResponse;

/**
 * @author intr3p1d
 */
public class Spring5HttpStatusProvider implements HttpStatusProvider {
    @Override
    public int getStatusCode(Object target) {
        if (target instanceof ClientHttpResponse) {
            final ClientHttpResponse response = (ClientHttpResponse) target;
            try {
                return response.getRawStatusCode();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return -1;
    }
}

View on GitHub (pinned to 744c3d3075)