Package io.grpc.xds.orca
Class OrcaMetricReportingServerInterceptor
java.lang.Object
io.grpc.xds.orca.OrcaMetricReportingServerInterceptor
- All Implemented Interfaces:
io.grpc.ServerInterceptor
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/9127")
public final class OrcaMetricReportingServerInterceptor
extends Object
implements io.grpc.ServerInterceptor
A
ServerInterceptor
that intercepts a ServerCall
by running server-side RPC
handling under a Context
that records custom per-request metrics provided by server
applications and sends to client side along with the response in the format of Open Request
Cost Aggregation (ORCA).- Since:
- 1.23.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final OrcaMetricReportingServerInterceptor
private final io.grpc.services.MetricRecorder
(package private) static final io.grpc.Metadata.Key
<OrcaLoadReport> -
Constructor Summary
ConstructorsConstructorDescriptionOrcaMetricReportingServerInterceptor
(io.grpc.services.MetricRecorder metricRecorder) -
Method Summary
Modifier and TypeMethodDescriptioncreate
(io.grpc.services.MetricRecorder metricRecorder) Creates a newOrcaMetricReportingServerInterceptor
instance with the givenMetricRecorder
.private static OrcaLoadReport.Builder
fromInternalReport
(io.grpc.services.MetricReport internalReport) <ReqT,
RespT>
io.grpc.ServerCall.Listener<ReqT> interceptCall
(io.grpc.ServerCall<ReqT, RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT, RespT> next) private static boolean
isReportValueSet
(double value) private static void
mergeMetrics
(OrcaLoadReport.Builder metricRecorderReportBuilder, io.grpc.services.MetricReport callMetricRecorderReport) Modify the givenOrcaLoadReport.Builder
containing metrics forMetricRecorder
such that metrics from the givenMetricReport
forCallMetricRecorder
takes a higher precedence.
-
Field Details
-
INSTANCE
-
ORCA_ENDPOINT_LOAD_METRICS_KEY
-
metricRecorder
-
-
Constructor Details
-
OrcaMetricReportingServerInterceptor
OrcaMetricReportingServerInterceptor(@Nullable io.grpc.services.MetricRecorder metricRecorder)
-
-
Method Details
-
getInstance
-
create
public static OrcaMetricReportingServerInterceptor create(@Nullable io.grpc.services.MetricRecorder metricRecorder) Creates a newOrcaMetricReportingServerInterceptor
instance with the givenMetricRecorder
. When bothCallMetricRecorder
andMetricRecorder
exist, the metrics are merged such that per-request metrics fromCallMetricRecorder
takes a higher precedence compared to metrics fromMetricRecorder
. -
interceptCall
public <ReqT,RespT> io.grpc.ServerCall.Listener<ReqT> interceptCall(io.grpc.ServerCall<ReqT, RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT, RespT> next) - Specified by:
interceptCall
in interfaceio.grpc.ServerInterceptor
-
fromInternalReport
private static OrcaLoadReport.Builder fromInternalReport(io.grpc.services.MetricReport internalReport) -
mergeMetrics
private static void mergeMetrics(OrcaLoadReport.Builder metricRecorderReportBuilder, io.grpc.services.MetricReport callMetricRecorderReport) Modify the givenOrcaLoadReport.Builder
containing metrics forMetricRecorder
such that metrics from the givenMetricReport
forCallMetricRecorder
takes a higher precedence. -
isReportValueSet
private static boolean isReportValueSet(double value)
-