Remove some Optional usages (#8190)

I applied [this
comment](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/8131#discussion_r1151076724)
to the whole codebase and removed some `Optional`s that were used in the
hot path
This commit is contained in:
Mateusz Rzeszutek 2023-04-03 09:13:59 +02:00 committed by GitHub
parent d6271cccc7
commit 46e5219f19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 51 additions and 39 deletions

View File

@ -5,12 +5,12 @@
package io.opentelemetry.javaagent.instrumentation.rabbitmq; package io.opentelemetry.javaagent.instrumentation.rabbitmq;
import static java.util.Collections.emptySet;
import com.rabbitmq.client.AMQP; import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.GetResponse; import com.rabbitmq.client.GetResponse;
import io.opentelemetry.context.propagation.TextMapGetter; import io.opentelemetry.context.propagation.TextMapGetter;
import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
enum ReceiveRequestTextMapGetter implements TextMapGetter<ReceiveRequest> { enum ReceiveRequestTextMapGetter implements TextMapGetter<ReceiveRequest> {
@ -18,23 +18,34 @@ enum ReceiveRequestTextMapGetter implements TextMapGetter<ReceiveRequest> {
@Override @Override
public Iterable<String> keys(ReceiveRequest carrier) { public Iterable<String> keys(ReceiveRequest carrier) {
return Optional.of(carrier) Map<String, Object> headers = getHeaders(carrier);
.map(ReceiveRequest::getResponse) return headers == null ? emptySet() : headers.keySet();
.map(GetResponse::getProps)
.map(AMQP.BasicProperties::getHeaders)
.map(Map::keySet)
.orElse(Collections.emptySet());
} }
@Nullable @Nullable
@Override @Override
public String get(@Nullable ReceiveRequest carrier, String key) { public String get(@Nullable ReceiveRequest carrier, String key) {
return Optional.ofNullable(carrier) Map<String, Object> headers = getHeaders(carrier);
.map(ReceiveRequest::getResponse) if (headers == null) {
.map(GetResponse::getProps) return null;
.map(AMQP.BasicProperties::getHeaders) }
.map(headers -> headers.get(key)) Object value = headers.get(key);
.map(Object::toString) return value == null ? null : value.toString();
.orElse(null); }
@Nullable
private static Map<String, Object> getHeaders(@Nullable ReceiveRequest carrier) {
if (carrier == null) {
return null;
}
GetResponse response = carrier.getResponse();
if (response == null) {
return null;
}
AMQP.BasicProperties props = response.getProps();
if (props == null) {
return null;
}
return props.getHeaders();
} }
} }

View File

@ -30,12 +30,9 @@ public abstract class AbstractThreadDispatchingHandler implements RecordedEventH
@Override @Override
public void accept(RecordedEvent ev) { public void accept(RecordedEvent ev) {
grouper String groupedName = grouper.groupedName(ev);
.groupedName(ev) if (groupedName != null) {
.ifPresent( perThread.computeIfAbsent(groupedName, this::createPerThreadSummarizer).accept(ev);
groupedThreadName -> }
perThread
.computeIfAbsent(groupedThreadName, this::createPerThreadSummarizer)
.accept(ev));
} }
} }

View File

@ -5,7 +5,7 @@
package io.opentelemetry.instrumentation.runtimetelemetryjfr.internal; package io.opentelemetry.instrumentation.runtimetelemetryjfr.internal;
import java.util.Optional; import javax.annotation.Nullable;
import jdk.jfr.consumer.RecordedEvent; import jdk.jfr.consumer.RecordedEvent;
import jdk.jfr.consumer.RecordedThread; import jdk.jfr.consumer.RecordedThread;
@ -14,13 +14,15 @@ import jdk.jfr.consumer.RecordedThread;
* any time. * any time.
*/ */
public final class ThreadGrouper { public final class ThreadGrouper {
// FIXME doesn't actually do any grouping, but should be safe for now // FIXME doesn't actually do any grouping, but should be safe for now
public Optional<String> groupedName(RecordedEvent ev) { @Nullable
public String groupedName(RecordedEvent ev) {
Object thisField = ev.getValue("eventThread"); Object thisField = ev.getValue("eventThread");
if (thisField instanceof RecordedThread) { if (thisField instanceof RecordedThread) {
RecordedThread thread = (RecordedThread) thisField; RecordedThread thread = (RecordedThread) thisField;
return Optional.of(thread.getJavaName()); return thread.getJavaName();
} }
return Optional.empty(); return null;
} }
} }

View File

@ -8,7 +8,6 @@ package io.opentelemetry.instrumentation.spring.webflux.v5_3;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.springframework.web.reactive.HandlerMapping; import org.springframework.web.reactive.HandlerMapping;
import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.ServerWebExchange;
@ -55,10 +54,7 @@ enum WebfluxServerHttpAttributesGetter
if (path == null && query == null) { if (path == null && query == null) {
return null; return null;
} }
if (query != null) { return (path == null ? "" : path) + (query == null ? "" : "?" + query);
query = "?" + query;
}
return Optional.ofNullable(path).orElse("") + Optional.ofNullable(query).orElse("");
} }
@Nullable @Nullable

View File

@ -11,7 +11,6 @@ import static org.springframework.web.util.ServletRequestPathUtils.PATH_ATTRIBUT
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.servlet.FilterConfig; import javax.servlet.FilterConfig;
@ -65,9 +64,13 @@ final class HttpRouteSupport {
boolean hasMappings() { boolean hasMappings() {
if (contextRefreshTriggered.compareAndSet(true, false)) { if (contextRefreshTriggered.compareAndSet(true, false)) {
// reload the handler mappings only if the web app context was recently refreshed // reload the handler mappings only if the web app context was recently refreshed
Optional.ofNullable(dispatcherServlet) DispatcherServlet dispatcherServlet = this.dispatcherServlet;
.map(DispatcherServlet::getHandlerMappings) if (dispatcherServlet != null) {
.ifPresent(this::setHandlerMappings); List<HandlerMapping> mappings = dispatcherServlet.getHandlerMappings();
if (mappings != null) {
setHandlerMappings(mappings);
}
}
} }
return handlerMappings != null; return handlerMappings != null;
} }

View File

@ -13,7 +13,6 @@ import jakarta.servlet.FilterConfig;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
@ -65,9 +64,13 @@ final class HttpRouteSupport {
boolean hasMappings() { boolean hasMappings() {
if (contextRefreshTriggered.compareAndSet(true, false)) { if (contextRefreshTriggered.compareAndSet(true, false)) {
// reload the handler mappings only if the web app context was recently refreshed // reload the handler mappings only if the web app context was recently refreshed
Optional.ofNullable(dispatcherServlet) DispatcherServlet dispatcherServlet = this.dispatcherServlet;
.map(DispatcherServlet::getHandlerMappings) if (dispatcherServlet != null) {
.ifPresent(this::setHandlerMappings); List<HandlerMapping> mappings = dispatcherServlet.getHandlerMappings();
if (mappings != null) {
setHandlerMappings(mappings);
}
}
} }
return handlerMappings != null; return handlerMappings != null;
} }