@@ -286,47 +286,47 @@ private void setSpanAttributes(ThreadContext threadContext, @Nullable Map<String
286286
287287 @ Override
288288 public void addError (String spanId , Throwable throwable ) {
289- final var span = Span . fromContextOrNull (spans .get (spanId ));
289+ final var span = spanFromContextOrNullWithoutLogging (spans .get (spanId ));
290290 if (span != null ) {
291291 span .recordException (throwable );
292292 }
293293 }
294294
295295 @ Override
296296 public void setAttribute (String spanId , String key , boolean value ) {
297- final var span = Span . fromContextOrNull (spans .get (spanId ));
297+ final var span = spanFromContextOrNullWithoutLogging (spans .get (spanId ));
298298 if (span != null ) {
299299 span .setAttribute (key , value );
300300 }
301301 }
302302
303303 @ Override
304304 public void setAttribute (String spanId , String key , double value ) {
305- final var span = Span . fromContextOrNull (spans .get (spanId ));
305+ final var span = spanFromContextOrNullWithoutLogging (spans .get (spanId ));
306306 if (span != null ) {
307307 span .setAttribute (key , value );
308308 }
309309 }
310310
311311 @ Override
312312 public void setAttribute (String spanId , String key , long value ) {
313- final var span = Span . fromContextOrNull (spans .get (spanId ));
313+ final var span = spanFromContextOrNullWithoutLogging (spans .get (spanId ));
314314 if (span != null ) {
315315 span .setAttribute (key , value );
316316 }
317317 }
318318
319319 @ Override
320320 public void setAttribute (String spanId , String key , String value ) {
321- final var span = Span . fromContextOrNull (spans .get (spanId ));
321+ final var span = spanFromContextOrNullWithoutLogging (spans .get (spanId ));
322322 if (span != null ) {
323323 span .setAttribute (key , value );
324324 }
325325 }
326326
327327 @ Override
328328 public void stopTrace (String spanId ) {
329- final var span = Span . fromContextOrNull (spans .remove (spanId ));
329+ final var span = spanFromContextOrNullWithoutLogging (spans .remove (spanId ));
330330 if (span != null ) {
331331 logger .trace ("Finishing trace [{}]" , spanId );
332332 span .end ();
@@ -335,12 +335,18 @@ public void stopTrace(String spanId) {
335335
336336 @ Override
337337 public void addEvent (String spanId , String eventName ) {
338- final var span = Span . fromContextOrNull (spans .get (spanId ));
338+ final var span = spanFromContextOrNullWithoutLogging (spans .get (spanId ));
339339 if (span != null ) {
340340 span .addEvent (eventName );
341341 }
342342 }
343343
344+ private static Span spanFromContextOrNullWithoutLogging (Context context ) {
345+ // Span.fromContextOrNull(null) is super-expensive today, see https://github.com/elastic/elasticsearch/issues/89107
346+ // and https://github.com/open-telemetry/opentelemetry-java/pull/4663
347+ return context == null ? null : Span .fromContextOrNull (context );
348+ }
349+
344350 private static class MapKeyGetter implements TextMapGetter <Map <String , String >> {
345351
346352 @ Override
0 commit comments