From 9a3e8357cc2a7f700232efdd93914d971432cc45 Mon Sep 17 00:00:00 2001 From: Alvin <329772643@qq.com> Date: Wed, 31 Mar 2021 07:11:30 +0800 Subject: [PATCH] Fix NullPointerException when call "ReactiveRequestHolder.getHeaders" (#6651) --- CHANGES.md | 1 + .../plugin/spring/mvc/commons/ReactiveRequestHolder.java | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index d5c1d8188..97231e226 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -27,6 +27,7 @@ Release Notes. * Replace hbase-1.x-plugin with hbase-1.x-2.x-plugin to adapt hbase client 2.x * Remove the close_before_method and close_after_method parameters of custom-enhance-plugin to avoid memory leaks. * Fix bug that springmvn-annotation-4.x-plugin, witness class does not exist in some versions. +* Fix NullPointerException with `ReactiveRequestHolder.getHeaders`. #### OAP-Backend * Allow user-defined `JAVA_OPTS` in the startup script. diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/ReactiveRequestHolder.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/ReactiveRequestHolder.java index d7130775c..b5e1876ae 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/ReactiveRequestHolder.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/ReactiveRequestHolder.java @@ -20,6 +20,7 @@ package org.apache.skywalking.apm.plugin.spring.mvc.commons; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -37,7 +38,11 @@ public class ReactiveRequestHolder implements RequestHolder { @Override public Enumeration getHeaders(final String headerName) { - return Collections.enumeration(this.serverHttpRequest.getHeaders().get(headerName)); + List values = this.serverHttpRequest.getHeaders().get(headerName); + if (values == null) { + return Collections.enumeration(Collections.EMPTY_LIST); + } + return Collections.enumeration(values); } @Override