From e1810c55017fc13724c6d32155b165ee251c1b61 Mon Sep 17 00:00:00 2001 From: idawda Date: Wed, 18 Dec 2024 18:08:02 +0530 Subject: [PATCH] PoC: Use Throwable.getStackTrace() instead of currentThread.getStackTrace() for optimise --- .../src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java | 2 +- .../src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java | 2 +- .../src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java | 2 +- .../src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java | 2 +- .../scala/org.apache.pekko/http/scaladsl/PekkoCoreUtils.java | 2 +- .../main/java/io/grpc/ServerCallListener_Instrumentation.java | 2 +- .../security/instrumentation/grpc140/GrpcServerUtils.java | 4 ++-- .../main/java/io/grpc/ServerCallListener_Instrumentation.java | 2 +- .../main/java/io/grpc/ServerCallListener_Instrumentation.java | 2 +- .../security/instrumentation/jersey2/HttpRequestHelper.java | 4 ++-- .../security/instrumentation/jersey2/HttpRequestHelper.java | 4 ++-- .../security/instrumentation/jersey2/HttpRequestHelper.java | 4 ++-- .../security/instrumentation/jetty11/HttpServletHelper.java | 2 +- .../instrumentation/jetty12/server/HttpServletHelper.java | 2 +- .../security/instrumentation/jetty9/HttpServletHelper.java | 2 +- .../src/main/java/security/io/netty400/utils/NettyUtils.java | 2 +- .../src/main/java/security/io/netty400/utils/NettyUtils.java | 2 +- .../main/java/javax/servlet/FilterChain_Instrumentation.java | 2 +- .../src/main/java/javax/servlet/Filter_Instrumentation.java | 2 +- .../src/main/java/javax/servlet/Servlet_Instrumentation.java | 2 +- .../java/jakarta/servlet/FilterChain_Instrumentation.java | 2 +- .../src/main/java/jakarta/servlet/Filter_Instrumentation.java | 2 +- .../main/java/jakarta/servlet/Servlet_Instrumentation.java | 2 +- .../java/jakarta/servlet/FilterChain_Instrumentation.java | 2 +- .../src/main/java/jakarta/servlet/Filter_Instrumentation.java | 2 +- .../main/java/jakarta/servlet/Servlet_Instrumentation.java | 2 +- .../src/main/scala/spray/can/SprayHttpUtils.java | 2 +- .../spray-http-1.3.1/src/main/scala/spray/SprayHttpUtils.java | 2 +- .../src/main/java/com/newrelic/api/agent/security/Agent.java | 2 +- .../agent/security/instrumentation/helpers/ServletHelper.java | 4 ++-- 30 files changed, 35 insertions(+), 35 deletions(-) diff --git a/instrumentation-security/akka-http-core-10.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java b/instrumentation-security/akka-http-core-10.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java index 4fcf2d24a..4727099c2 100644 --- a/instrumentation-security/akka-http-core-10.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java +++ b/instrumentation-security/akka-http-core-10.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java @@ -115,7 +115,7 @@ public static void preProcessHttpRequest (Boolean isServletLockAcquired, HttpReq securityRequest.setContentType(httpRequest.entity().getContentType().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setBody(requestBody); securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/akka-http-core-2.11_10.0.11/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java b/instrumentation-security/akka-http-core-2.11_10.0.11/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java index 0329e7dcf..6955bc653 100644 --- a/instrumentation-security/akka-http-core-2.11_10.0.11/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java +++ b/instrumentation-security/akka-http-core-2.11_10.0.11/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java @@ -115,7 +115,7 @@ public static void preProcessHttpRequest (Boolean isServletLockAcquired, HttpReq securityRequest.setContentType(httpRequest.entity().getContentType().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setBody(requestBody); securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/akka-http-core-2.13_10.1.8/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java b/instrumentation-security/akka-http-core-2.13_10.1.8/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java index 14d611635..cf1116cc3 100644 --- a/instrumentation-security/akka-http-core-2.13_10.1.8/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java +++ b/instrumentation-security/akka-http-core-2.13_10.1.8/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java @@ -112,7 +112,7 @@ public static void preProcessHttpRequest (Boolean isServletLockAcquired, HttpReq securityRequest.setContentType(httpRequest.entity().getContentType().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setBody(requestBody); securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/akka-http-core-2.13_10.2.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java b/instrumentation-security/akka-http-core-2.13_10.2.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java index b52bce019..08fe8759a 100644 --- a/instrumentation-security/akka-http-core-2.13_10.2.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java +++ b/instrumentation-security/akka-http-core-2.13_10.2.0/src/main/scala/akka/http/scaladsl/AkkaCoreUtils.java @@ -115,7 +115,7 @@ public static void preProcessHttpRequest (Boolean isServletLockAcquired, HttpReq securityRequest.setContentType(httpRequest.entity().getContentType().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setBody(requestBody); securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/apache-pekko-http-core-2.13_1/src/main/scala/org.apache.pekko/http/scaladsl/PekkoCoreUtils.java b/instrumentation-security/apache-pekko-http-core-2.13_1/src/main/scala/org.apache.pekko/http/scaladsl/PekkoCoreUtils.java index 73fa86c44..d57b676d9 100644 --- a/instrumentation-security/apache-pekko-http-core-2.13_1/src/main/scala/org.apache.pekko/http/scaladsl/PekkoCoreUtils.java +++ b/instrumentation-security/apache-pekko-http-core-2.13_1/src/main/scala/org.apache.pekko/http/scaladsl/PekkoCoreUtils.java @@ -137,7 +137,7 @@ public static void preProcessHttpRequest(Boolean isServletLockAcquired, HttpRequ securityRequest.setContentType(request.entity().getContentType().toString()); } - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setBody(requestBody); securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java b/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java index 677671b37..72e4b4804 100644 --- a/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java +++ b/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java @@ -47,7 +47,7 @@ public void onMessage(ReqT message) { public void onHalfClose() { if (NewRelicSecurity.isHookProcessingActive()) { SecurityMetaData securityMetaData = NewRelicSecurity.getAgent().getSecurityMetaData(); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); } if (tokenForCsec != null) { diff --git a/instrumentation-security/grpc-1.4.0/src/main/java/com/newrelic/agent/security/instrumentation/grpc140/GrpcServerUtils.java b/instrumentation-security/grpc-1.4.0/src/main/java/com/newrelic/agent/security/instrumentation/grpc140/GrpcServerUtils.java index 87cb954c5..fa76c5292 100644 --- a/instrumentation-security/grpc-1.4.0/src/main/java/com/newrelic/agent/security/instrumentation/grpc140/GrpcServerUtils.java +++ b/instrumentation-security/grpc-1.4.0/src/main/java/com/newrelic/agent/security/instrumentation/grpc140/GrpcServerUtils.java @@ -28,7 +28,7 @@ public class GrpcServerUtils { private static final String EMPTY = ""; public static final String METHOD_NAME_START_CALL = "startCall"; public static final String NR_SEC_CUSTOM_ATTRIB_NAME = "NR_CSEC_GRPC_SERVER_OPERATIONAL_LOCK_"; - private static Set typeRegistries = new HashSet<>(); + private static final Set typeRegistries = new HashSet<>(); public static void preprocessSecurityHook(ServerStream_Instrumentation call, ServerMethodDefinition methodDef, Metadata meta, String klass) { try { @@ -79,7 +79,7 @@ public static void preprocessSecurityHook(ServerStream_Instrumentat securityRequest.setContentType(meta.get(Metadata.Key.of("content-type", Metadata.ASCII_STRING_MARSHALLER))); // TODO: moving this code to its proper place - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java b/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java index b1b4b49b0..c07e854af 100644 --- a/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java +++ b/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java @@ -47,7 +47,7 @@ public void onMessage(ReqT message) { public void onHalfClose() { if (NewRelicSecurity.isHookProcessingActive()) { SecurityMetaData securityMetaData = NewRelicSecurity.getAgent().getSecurityMetaData(); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); } if (tokenForCsec != null) { diff --git a/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java b/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java index 406e6cca8..03e3fc029 100644 --- a/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java +++ b/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/ServerCallListener_Instrumentation.java @@ -47,7 +47,7 @@ public void onMessage(ReqT message) { public void onHalfClose() { if (NewRelicSecurity.isHookProcessingActive()) { SecurityMetaData securityMetaData = NewRelicSecurity.getAgent().getSecurityMetaData(); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); } if (tokenForCsec != null) { diff --git a/instrumentation-security/jersey-2.16/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java b/instrumentation-security/jersey-2.16/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java index 1dace5e70..9ba077e97 100644 --- a/instrumentation-security/jersey-2.16/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java +++ b/instrumentation-security/jersey-2.16/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java @@ -63,7 +63,7 @@ public static void preprocessSecurityHook(ContainerRequest requestContext) { securityMetaData.setTracingHeaderValue(HttpRequestHelper.getTraceHeader(securityRequest.getHeaders())); securityRequest.setUrl(requestContext.getRequestUri().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e) { @@ -269,7 +269,7 @@ public static void registerUserLevelCode(String frameworkName) { SecurityMetaData securityMetaData = NewRelicSecurity.getAgent().getSecurityMetaData(); if (!securityMetaData.getMetaData().isUserLevelServiceMethodEncountered(frameworkName)) { securityMetaData.getMetaData().setUserLevelServiceMethodEncountered(true); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); } } catch (Throwable ignored) { diff --git a/instrumentation-security/jersey-2/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java b/instrumentation-security/jersey-2/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java index 18e77b36c..163587d7f 100644 --- a/instrumentation-security/jersey-2/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java +++ b/instrumentation-security/jersey-2/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java @@ -66,7 +66,7 @@ public static void preprocessSecurityHook(ContainerRequest requestContext) { securityMetaData.setTracingHeaderValue(HttpRequestHelper.getTraceHeader(securityRequest.getHeaders())); securityRequest.setUrl(requestContext.getRequestUri().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e) { @@ -255,7 +255,7 @@ public static void registerUserLevelCode(String frameworkName) { SecurityMetaData securityMetaData = NewRelicSecurity.getAgent().getSecurityMetaData(); if (!securityMetaData.getMetaData().isUserLevelServiceMethodEncountered(frameworkName)) { securityMetaData.getMetaData().setUserLevelServiceMethodEncountered(true); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); } } catch (Throwable ignored) { diff --git a/instrumentation-security/jersey-3/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java b/instrumentation-security/jersey-3/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java index 14d88c1af..90ba80c51 100644 --- a/instrumentation-security/jersey-3/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java +++ b/instrumentation-security/jersey-3/src/main/java/com/newrelic/agent/security/instrumentation/jersey2/HttpRequestHelper.java @@ -68,7 +68,7 @@ public static void preprocessSecurityHook(ContainerRequest requestContext) { securityMetaData.setTracingHeaderValue(HttpRequestHelper.getTraceHeader(securityRequest.getHeaders())); securityRequest.setUrl(requestContext.getRequestUri().toString()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e) { @@ -281,7 +281,7 @@ public static void registerUserLevelCode(String frameworkName) { SecurityMetaData securityMetaData = NewRelicSecurity.getAgent().getSecurityMetaData(); if (!securityMetaData.getMetaData().isUserLevelServiceMethodEncountered(frameworkName)) { securityMetaData.getMetaData().setUserLevelServiceMethodEncountered(true); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); } } catch (Throwable ignored) { diff --git a/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java b/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java index d95541647..fe5942332 100644 --- a/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java +++ b/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java @@ -144,7 +144,7 @@ public static void preprocessSecurityHook(HttpServletRequest httpServletRequest) } securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e) { diff --git a/instrumentation-security/jetty-12/src/main/java/com/newrelic/agent/security/instrumentation/jetty12/server/HttpServletHelper.java b/instrumentation-security/jetty-12/src/main/java/com/newrelic/agent/security/instrumentation/jetty12/server/HttpServletHelper.java index 5632b836b..fad6657db 100644 --- a/instrumentation-security/jetty-12/src/main/java/com/newrelic/agent/security/instrumentation/jetty12/server/HttpServletHelper.java +++ b/instrumentation-security/jetty-12/src/main/java/com/newrelic/agent/security/instrumentation/jetty12/server/HttpServletHelper.java @@ -142,7 +142,7 @@ public static void preprocessSecurityHook(Request request) { } securityRequest.setContentType(request.getHeaders().get(HttpHeader.CONTENT_TYPE)); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e) { diff --git a/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java b/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java index a01ba5d19..f61ebc84f 100644 --- a/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java +++ b/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java @@ -145,7 +145,7 @@ public static void preprocessSecurityHook(HttpServletRequest httpServletRequest) } securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e) { diff --git a/instrumentation-security/netty-4.0.0/src/main/java/security/io/netty400/utils/NettyUtils.java b/instrumentation-security/netty-4.0.0/src/main/java/security/io/netty400/utils/NettyUtils.java index 9833b89d7..f775149ea 100644 --- a/instrumentation-security/netty-4.0.0/src/main/java/security/io/netty400/utils/NettyUtils.java +++ b/instrumentation-security/netty-4.0.0/src/main/java/security/io/netty400/utils/NettyUtils.java @@ -59,7 +59,7 @@ public static void processSecurityRequest(ChannelHandlerContext ctx, Object msg, securityRequest.setProtocol(((HttpRequest) msg).getProtocolVersion().protocolName().toLowerCase()); securityRequest.setContentType(securityRequest.getHeaders().get("content-type")); if (!securityMetaData.getMetaData().isUserLevelServiceMethodEncountered(IO_NETTY)){ - StackTraceElement[] stack = Thread.currentThread().getStackTrace(); + StackTraceElement[] stack = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(stack, 2, stack.length)); } securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/netty-4.0.8/src/main/java/security/io/netty400/utils/NettyUtils.java b/instrumentation-security/netty-4.0.8/src/main/java/security/io/netty400/utils/NettyUtils.java index 557dfed6e..8ebe4c19b 100644 --- a/instrumentation-security/netty-4.0.8/src/main/java/security/io/netty400/utils/NettyUtils.java +++ b/instrumentation-security/netty-4.0.8/src/main/java/security/io/netty400/utils/NettyUtils.java @@ -58,7 +58,7 @@ public static void processSecurityRequest(ChannelHandlerContext ctx, Object msg, securityRequest.setProtocol(((HttpRequest) msg).getProtocolVersion().protocolName().toLowerCase()); securityRequest.setContentType(securityRequest.getHeaders().get("content-type")); if (!securityMetaData.getMetaData().isUserLevelServiceMethodEncountered(IO_NETTY)){ - StackTraceElement[] stack = Thread.currentThread().getStackTrace(); + StackTraceElement[] stack = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(stack, 2, stack.length)); } securityRequest.setRequestParsed(true); diff --git a/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/FilterChain_Instrumentation.java b/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/FilterChain_Instrumentation.java index 05148d40e..48942ebbd 100644 --- a/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/FilterChain_Instrumentation.java +++ b/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/FilterChain_Instrumentation.java @@ -83,7 +83,7 @@ private void preprocessSecurityHook(ServletRequest request, ServletResponse resp securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Filter_Instrumentation.java b/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Filter_Instrumentation.java index f4e6a1cea..13f8b4e67 100644 --- a/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Filter_Instrumentation.java +++ b/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Filter_Instrumentation.java @@ -75,7 +75,7 @@ private void preprocessSecurityHook(ServletRequest request, ServletResponse resp } securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Servlet_Instrumentation.java b/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Servlet_Instrumentation.java index 448b91a53..4d61a7a80 100644 --- a/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Servlet_Instrumentation.java +++ b/instrumentation-security/servlet-2.4/src/main/java/javax/servlet/Servlet_Instrumentation.java @@ -87,7 +87,7 @@ private void preprocessSecurityHook(ServletRequest_Instrumentation request, Serv securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java b/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java index d8483d4cf..57dbbe293 100644 --- a/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java +++ b/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java @@ -76,7 +76,7 @@ private void preprocessSecurityHook(ServletRequest request, ServletResponse resp } securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java b/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java index 47283c4e6..5c9b4573f 100644 --- a/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java +++ b/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java @@ -78,7 +78,7 @@ private void preprocessSecurityHook(ServletRequest request, ServletResponse resp securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java b/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java index b4a82c2cb..300771ab9 100644 --- a/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java +++ b/instrumentation-security/servlet-5.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java @@ -82,7 +82,7 @@ private void preprocessSecurityHook(ServletRequest_Instrumentation request, Serv } securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java b/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java index 466c60a54..3e817619a 100644 --- a/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java +++ b/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/FilterChain_Instrumentation.java @@ -77,7 +77,7 @@ private void preprocessSecurityHook(ServletRequest request, ServletResponse resp securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java b/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java index e3d1a8c27..2cc0f861e 100644 --- a/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java +++ b/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Filter_Instrumentation.java @@ -79,7 +79,7 @@ private void preprocessSecurityHook(ServletRequest request, ServletResponse resp securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java b/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java index eac50ff96..15ef0bc29 100644 --- a/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java +++ b/instrumentation-security/servlet-6.0/src/main/java/jakarta/servlet/Servlet_Instrumentation.java @@ -82,7 +82,7 @@ private void preprocessSecurityHook(ServletRequest_Instrumentation request, Serv } securityRequest.setContentType(httpServletRequest.getContentType()); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 1, trace.length)); securityRequest.setRequestParsed(true); } catch (Throwable e){ diff --git a/instrumentation-security/spray-can-1.3.1/src/main/scala/spray/can/SprayHttpUtils.java b/instrumentation-security/spray-can-1.3.1/src/main/scala/spray/can/SprayHttpUtils.java index 4061d0379..200e989e7 100644 --- a/instrumentation-security/spray-can-1.3.1/src/main/scala/spray/can/SprayHttpUtils.java +++ b/instrumentation-security/spray-can-1.3.1/src/main/scala/spray/can/SprayHttpUtils.java @@ -54,7 +54,7 @@ public static void preProcessRequestHook(HttpRequest request) { securityRequest.setBody(new StringBuilder(request.entity().data().asString(StandardCharsets.UTF_8))); } - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Exception e){ diff --git a/instrumentation-security/spray-http-1.3.1/src/main/scala/spray/SprayHttpUtils.java b/instrumentation-security/spray-http-1.3.1/src/main/scala/spray/SprayHttpUtils.java index b9091b002..b8361e4b6 100644 --- a/instrumentation-security/spray-http-1.3.1/src/main/scala/spray/SprayHttpUtils.java +++ b/instrumentation-security/spray-http-1.3.1/src/main/scala/spray/SprayHttpUtils.java @@ -54,7 +54,7 @@ public static void preProcessRequestHook(HttpRequest request) { securityRequest.setBody(new StringBuilder(request.entity().data().asString(StandardCharsets.UTF_8))); } - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, 2, trace.length)); securityRequest.setRequestParsed(true); } catch (Exception e){ diff --git a/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java b/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java index a9b9de952..485debad9 100644 --- a/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java +++ b/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java @@ -408,7 +408,7 @@ public void registerOperation(AbstractOperation operation) { } else if (operation instanceof SecureCookieOperationSet) { operation.setStackTrace(securityMetaData.getMetaData().getServiceTrace()); } else { - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); operation.setStackTrace(Arrays.copyOfRange(trace, securityMetaData.getMetaData().getFromJumpRequiredInStackTrace(), trace.length)); } diff --git a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/ServletHelper.java b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/ServletHelper.java index a6c57384e..780f087a7 100644 --- a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/ServletHelper.java +++ b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/ServletHelper.java @@ -36,7 +36,7 @@ public class ServletHelper { public static final String NR_SEC_HTTP_SESSION_ATTRIB_NAME = "NR-CSEC-HTTP-SESSION-"; public static final String NR_SEC_HTTP_SERVLET_RESPONSE_ATTRIB_NAME = "NR-CSEC-HTTP-SERVLET-RESPONSE-"; - private static Set filesToRemove = ConcurrentHashMap.newKeySet(); + private static final Set filesToRemove = ConcurrentHashMap.newKeySet(); private static final Set unsupportedContentType = new HashSet() {{ add("application/zip"); add("application/epub+zip"); @@ -177,7 +177,7 @@ public static boolean registerUserLevelCode(String frameworkName, boolean asyncC if (!securityMetaData.getMetaData().isFoundAnnotedUserLevelServiceMethod()) { securityMetaData.getMetaData().setUserLevelServiceMethodEncountered(true); securityMetaData.getMetaData().setUserLevelServiceMethodEncounteredFramework(frameworkName); - StackTraceElement[] trace = Thread.currentThread().getStackTrace(); + StackTraceElement[] trace = (new Exception()).getStackTrace(); securityMetaData.getMetaData().setServiceTrace(Arrays.copyOfRange(trace, asyncContext?2:3, trace.length)); return true; }