static

in common/src/main/java/io/opentelemetry/sdk/trace/FieldBackedSpanValueStorageProvider.java [52:81]


  static {
    FieldBackedSpanValueStorageProvider resultInstance = null;
    MethodHandle getter = null;
    AtomicReferenceFieldUpdater<SdkSpan, Object> setter = null;
    try {
      Field storageField = SdkSpan.class.getDeclaredField(FIELD_NAME);
      if (storageField.getType() != Object.class) {
        throw new IllegalStateException("Unexpected field type: " + storageField.getType());
      }

      getter = MethodHandles.lookup().unreflectGetter(storageField);
      setter = AtomicReferenceFieldUpdater.newUpdater(SdkSpan.class, Object.class, FIELD_NAME);

      logger.log(Level.FINE, "Using field-backed storage for SpanValues", FIELD_NAME);
      resultInstance = new FieldBackedSpanValueStorageProvider();

    } catch (NoSuchFieldException e) {
      logger.log(
          Level.FINE,
          "Using map-backed storage for SpanValues because Field '{0}' does not exist on SdkSpan",
          FIELD_NAME);
    } catch (Exception e) {
      logger.log(Level.SEVERE, "Failed to initialize span value storage", e);
      throw new IllegalStateException(e);
    }

    spanFieldGetter = getter;
    spanFieldSetter = setter;
    INSTANCE = resultInstance;
  }