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:
parent
d6271cccc7
commit
46e5219f19
|
@ -5,12 +5,12 @@
|
|||
|
||||
package io.opentelemetry.javaagent.instrumentation.rabbitmq;
|
||||
|
||||
import static java.util.Collections.emptySet;
|
||||
|
||||
import com.rabbitmq.client.AMQP;
|
||||
import com.rabbitmq.client.GetResponse;
|
||||
import io.opentelemetry.context.propagation.TextMapGetter;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
enum ReceiveRequestTextMapGetter implements TextMapGetter<ReceiveRequest> {
|
||||
|
@ -18,23 +18,34 @@ enum ReceiveRequestTextMapGetter implements TextMapGetter<ReceiveRequest> {
|
|||
|
||||
@Override
|
||||
public Iterable<String> keys(ReceiveRequest carrier) {
|
||||
return Optional.of(carrier)
|
||||
.map(ReceiveRequest::getResponse)
|
||||
.map(GetResponse::getProps)
|
||||
.map(AMQP.BasicProperties::getHeaders)
|
||||
.map(Map::keySet)
|
||||
.orElse(Collections.emptySet());
|
||||
Map<String, Object> headers = getHeaders(carrier);
|
||||
return headers == null ? emptySet() : headers.keySet();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String get(@Nullable ReceiveRequest carrier, String key) {
|
||||
return Optional.ofNullable(carrier)
|
||||
.map(ReceiveRequest::getResponse)
|
||||
.map(GetResponse::getProps)
|
||||
.map(AMQP.BasicProperties::getHeaders)
|
||||
.map(headers -> headers.get(key))
|
||||
.map(Object::toString)
|
||||
.orElse(null);
|
||||
Map<String, Object> headers = getHeaders(carrier);
|
||||
if (headers == null) {
|
||||
return null;
|
||||
}
|
||||
Object value = headers.get(key);
|
||||
return value == null ? null : value.toString();
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,12 +30,9 @@ public abstract class AbstractThreadDispatchingHandler implements RecordedEventH
|
|||
|
||||
@Override
|
||||
public void accept(RecordedEvent ev) {
|
||||
grouper
|
||||
.groupedName(ev)
|
||||
.ifPresent(
|
||||
groupedThreadName ->
|
||||
perThread
|
||||
.computeIfAbsent(groupedThreadName, this::createPerThreadSummarizer)
|
||||
.accept(ev));
|
||||
String groupedName = grouper.groupedName(ev);
|
||||
if (groupedName != null) {
|
||||
perThread.computeIfAbsent(groupedName, this::createPerThreadSummarizer).accept(ev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
package io.opentelemetry.instrumentation.runtimetelemetryjfr.internal;
|
||||
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import jdk.jfr.consumer.RecordedEvent;
|
||||
import jdk.jfr.consumer.RecordedThread;
|
||||
|
||||
|
@ -14,13 +14,15 @@ import jdk.jfr.consumer.RecordedThread;
|
|||
* any time.
|
||||
*/
|
||||
public final class ThreadGrouper {
|
||||
|
||||
// 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");
|
||||
if (thisField instanceof RecordedThread) {
|
||||
RecordedThread thread = (RecordedThread) thisField;
|
||||
return Optional.of(thread.getJavaName());
|
||||
return thread.getJavaName();
|
||||
}
|
||||
return Optional.empty();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ package io.opentelemetry.instrumentation.spring.webflux.v5_3;
|
|||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.springframework.web.reactive.HandlerMapping;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
|
@ -55,10 +54,7 @@ enum WebfluxServerHttpAttributesGetter
|
|||
if (path == null && query == null) {
|
||||
return null;
|
||||
}
|
||||
if (query != null) {
|
||||
query = "?" + query;
|
||||
}
|
||||
return Optional.ofNullable(path).orElse("") + Optional.ofNullable(query).orElse("");
|
||||
return (path == null ? "" : path) + (query == null ? "" : "?" + query);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
|
@ -11,7 +11,6 @@ import static org.springframework.web.util.ServletRequestPathUtils.PATH_ATTRIBUT
|
|||
import io.opentelemetry.context.Context;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.servlet.FilterConfig;
|
||||
|
@ -65,9 +64,13 @@ final class HttpRouteSupport {
|
|||
boolean hasMappings() {
|
||||
if (contextRefreshTriggered.compareAndSet(true, false)) {
|
||||
// reload the handler mappings only if the web app context was recently refreshed
|
||||
Optional.ofNullable(dispatcherServlet)
|
||||
.map(DispatcherServlet::getHandlerMappings)
|
||||
.ifPresent(this::setHandlerMappings);
|
||||
DispatcherServlet dispatcherServlet = this.dispatcherServlet;
|
||||
if (dispatcherServlet != null) {
|
||||
List<HandlerMapping> mappings = dispatcherServlet.getHandlerMappings();
|
||||
if (mappings != null) {
|
||||
setHandlerMappings(mappings);
|
||||
}
|
||||
}
|
||||
}
|
||||
return handlerMappings != null;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ import jakarta.servlet.FilterConfig;
|
|||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import javax.annotation.Nullable;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
|
@ -65,9 +64,13 @@ final class HttpRouteSupport {
|
|||
boolean hasMappings() {
|
||||
if (contextRefreshTriggered.compareAndSet(true, false)) {
|
||||
// reload the handler mappings only if the web app context was recently refreshed
|
||||
Optional.ofNullable(dispatcherServlet)
|
||||
.map(DispatcherServlet::getHandlerMappings)
|
||||
.ifPresent(this::setHandlerMappings);
|
||||
DispatcherServlet dispatcherServlet = this.dispatcherServlet;
|
||||
if (dispatcherServlet != null) {
|
||||
List<HandlerMapping> mappings = dispatcherServlet.getHandlerMappings();
|
||||
if (mappings != null) {
|
||||
setHandlerMappings(mappings);
|
||||
}
|
||||
}
|
||||
}
|
||||
return handlerMappings != null;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue