@@ -878,6 +878,7 @@ void attributeLength() {
878878 assertThat (event .getAttributes ().get (stringKey ("exception.message" ))).isEqualTo (strVal );
879879 assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" )).length ())
880880 .isLessThanOrEqualTo (maxLength );
881+ assertThat (event .getAttributes ().size ()).isEqualTo (3 );
881882 } finally {
882883 span .end ();
883884 }
@@ -1159,6 +1160,9 @@ void recordException() {
11591160 testClock .advance (Duration .ofNanos (1000 ));
11601161 long timestamp = testClock .now ();
11611162
1163+ // make sure that span attributes don't leak down to the exception event
1164+ span .setAttribute ("spankey" , "val" );
1165+
11621166 span .recordException (exception );
11631167
11641168 List <EventData > events = span .toSpanData ().getEvents ();
@@ -1171,6 +1175,7 @@ void recordException() {
11711175 assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
11721176 .isEqualTo (exception .getClass ().getName ());
11731177 assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1178+ assertThat (event .getAttributes ().size ()).isEqualTo (3 );
11741179 assertThat (event )
11751180 .isInstanceOfSatisfying (
11761181 ExceptionEventData .class ,
@@ -1184,12 +1189,20 @@ void recordException_noMessage() {
11841189 IllegalStateException exception = new IllegalStateException ();
11851190 SdkSpan span = createTestRootSpan ();
11861191
1192+ StringWriter writer = new StringWriter ();
1193+ exception .printStackTrace (new PrintWriter (writer ));
1194+ String stacktrace = writer .toString ();
1195+
11871196 span .recordException (exception );
11881197
11891198 List <EventData > events = span .toSpanData ().getEvents ();
11901199 assertThat (events ).hasSize (1 );
11911200 EventData event = events .get (0 );
11921201 assertThat (event .getAttributes ().get (stringKey ("exception.message" ))).isNull ();
1202+ assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
1203+ .isEqualTo ("java.lang.IllegalStateException" );
1204+ assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1205+ assertThat (event .getAttributes ().size ()).isEqualTo (2 );
11931206 }
11941207
11951208 private static class InnerClassException extends Exception {}
@@ -1199,13 +1212,19 @@ void recordException_innerClassException() {
11991212 InnerClassException exception = new InnerClassException ();
12001213 SdkSpan span = createTestRootSpan ();
12011214
1215+ StringWriter writer = new StringWriter ();
1216+ exception .printStackTrace (new PrintWriter (writer ));
1217+ String stacktrace = writer .toString ();
1218+
12021219 span .recordException (exception );
12031220
12041221 List <EventData > events = span .toSpanData ().getEvents ();
12051222 assertThat (events ).hasSize (1 );
12061223 EventData event = events .get (0 );
12071224 assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
12081225 .isEqualTo ("io.opentelemetry.sdk.trace.SdkSpanTest.InnerClassException" );
1226+ assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1227+ assertThat (event .getAttributes ().size ()).isEqualTo (2 );
12091228 }
12101229
12111230 @ Test
@@ -1220,6 +1239,9 @@ void recordException_additionalAttributes() {
12201239 testClock .advance (Duration .ofNanos (1000 ));
12211240 long timestamp = testClock .now ();
12221241
1242+ // make sure that span attributes don't leak down to the exception event
1243+ span .setAttribute ("spankey" , "val" );
1244+
12231245 span .recordException (
12241246 exception ,
12251247 Attributes .of (
@@ -1240,6 +1262,7 @@ void recordException_additionalAttributes() {
12401262 assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
12411263 .isEqualTo ("java.lang.IllegalStateException" );
12421264 assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1265+ assertThat (event .getAttributes ().size ()).isEqualTo (4 );
12431266
12441267 assertThat (event )
12451268 .isInstanceOfSatisfying (
0 commit comments