@@ -101,41 +101,16 @@ public SpannerStructuredTable(TransactionContext transactionContext,
101101 */
102102 private String getCaller () {
103103 StackTraceElement [] elements = Thread .currentThread ().getStackTrace ();
104- StringBuilder callerPath = new StringBuilder ();
105- int depth = 0 ;
106-
104+ // Index 0 is getStackTrace, Index 1 is getCaller, so start at 2
107105 for (int i = 2 ; i < elements .length ; i ++) {
108106 String className = elements [i ].getClassName ();
109-
110- // Skip Spanner storage classes, base Java internals, and Netty web server internals
107+ // Skip Spanner storage classes and native Thread calls to find the actual CDAP caller
111108 if (!className .startsWith ("io.cdap.cdap.storage.spanner" ) &&
112- !className .startsWith ("java." ) &&
113- !className .startsWith ("javax." ) &&
114- !className .startsWith ("sun." ) &&
115- !className .startsWith ("jdk." ) &&
116- !className .startsWith ("io.netty." )) {
117-
118- // Strip the long package name for readability (e.g., just "AppMetadataStore")
119- String simpleClassName = className .substring (className .lastIndexOf ('.' ) + 1 );
120-
121- if (callerPath .length () > 0 ) {
122- callerPath .append (" <- " );
123- }
124-
125- callerPath .append (simpleClassName )
126- .append ("." )
127- .append (elements [i ].getMethodName ())
128- .append (":" )
129- .append (elements [i ].getLineNumber ());
130-
131- depth ++;
132- // Capture up to 4 levels deep. This is usually enough to hit the HttpHandler
133- if (depth >= 4 ) {
134- break ;
135- }
109+ !className .startsWith ("java.lang.Thread" )) {
110+ return className + "." + elements [i ].getMethodName () + ":" + elements [i ].getLineNumber ();
136111 }
137112 }
138- return callerPath . length () > 0 ? callerPath . toString () : "UnknownCaller" ;
113+ return "UnknownCaller" ;
139114 }
140115
141116 @ Override
0 commit comments