Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
core: Migrate to new OpenCensus method & status tags
Fixes #5593 and supersedes #5601

Now that census-instrumentation/opencensus-java#1854 has been merged & released as 0.21.0. We can start using the method & status tags.

Background:
Opencensus introduced new tags for status and method (census-instrumentation/opencensus-java#1115). The old views that used those tags were deprecated and new views were created that used the new tags. However grpc-java wasn't updated to use the new tags due to concern of breaking existing metrics. This resulted in the old views being deprecated while the new views were broken (goomics #50).

census-instrumentation/opencensus-java#1854 added a compatibility layer to opencensus that would remap new tags to old tags for old views. This should unblock grpc to switching to the new tags while allowing old views to still be populated. That commit was released as part of opencensus 0.21, which grpc currently uses
  • Loading branch information
igorbernstein2 committed Jul 21, 2019
commit 1298210e878a8660b67d0a6340b03794360a2f0c
8 changes: 4 additions & 4 deletions core/src/main/java/io/grpc/internal/CensusStatsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ static final class ClientCallTracer extends ClientStreamTracer.Factory {
this.parentCtx = checkNotNull(parentCtx);
TagValue methodTag = TagValue.create(fullMethodName);
this.startCtx = module.tagger.toBuilder(parentCtx)
.putLocal(DeprecatedCensusConstants.RPC_METHOD, methodTag)
.putLocal(RpcMeasureConstants.GRPC_CLIENT_METHOD, methodTag)
.build();
this.stopwatch = module.stopwatchSupplier.get().start();
if (module.recordStartedRpcs) {
Expand Down Expand Up @@ -442,7 +442,7 @@ void callEnded(Status status) {
module
.tagger
.toBuilder(startCtx)
.putLocal(DeprecatedCensusConstants.RPC_STATUS, statusTag)
.putLocal(RpcMeasureConstants.GRPC_CLIENT_STATUS, statusTag)
.build());
}
}
Expand Down Expand Up @@ -647,7 +647,7 @@ public void streamClosed(Status status) {
module
.tagger
.toBuilder(parentCtx)
.putLocal(DeprecatedCensusConstants.RPC_STATUS, statusTag)
.putLocal(RpcMeasureConstants.GRPC_SERVER_STATUS, statusTag)
.build());
}

Expand All @@ -672,7 +672,7 @@ public ServerStreamTracer newServerStreamTracer(String fullMethodName, Metadata
parentCtx =
tagger
.toBuilder(parentCtx)
.putLocal(DeprecatedCensusConstants.RPC_METHOD, methodTag)
.putLocal(RpcMeasureConstants.GRPC_SERVER_METHOD, methodTag)
.build();
return new ServerTracer(CensusStatsModule.this, parentCtx);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@
@SuppressWarnings("deprecation")
@VisibleForTesting
public final class DeprecatedCensusConstants {

public static final TagKey RPC_STATUS = RpcMeasureConstants.RPC_STATUS;
public static final TagKey RPC_METHOD = RpcMeasureConstants.RPC_METHOD;

public static final MeasureLong RPC_CLIENT_ERROR_COUNT =
RpcMeasureConstants.RPC_CLIENT_ERROR_COUNT;
public static final MeasureDouble RPC_CLIENT_REQUEST_BYTES =
Expand Down
85 changes: 45 additions & 40 deletions core/src/test/java/io/grpc/internal/CensusModulesTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,8 @@ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(

StatsTestUtils.MetricsRecord record = statsRecorder.pollRecord();
assertNotNull(record);
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
if (nonDefaultContext) {
TagValue extraTag = record.tags.get(StatsTestUtils.EXTRA_TAG);
assertEquals("extra value", extraTag.asString());
Expand Down Expand Up @@ -322,10 +322,10 @@ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
// The intercepting listener calls callEnded() on ClientCallTracer, which records to Census.
record = statsRecorder.pollRecord();
assertNotNull(record);
methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue statusTagOld = record.tags.get(DeprecatedCensusConstants.RPC_STATUS);
assertEquals(Status.Code.PERMISSION_DENIED.toString(), statusTagOld.asString());
methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
TagValue statusTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_STATUS);
assertEquals(Status.Code.PERMISSION_DENIED.toString(), statusTag.asString());
if (nonDefaultContext) {
TagValue extraTag = record.tags.get(StatsTestUtils.EXTRA_TAG);
assertEquals("extra value", extraTag.asString());
Expand Down Expand Up @@ -384,8 +384,8 @@ private void subtestClientBasicStatsDefaultContext(
assertNotNull(record);
assertNoServerContent(record);
assertEquals(1, record.tags.size());
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
assertEquals(
1, record.getMetricAsLongOrFail(DeprecatedCensusConstants.RPC_CLIENT_STARTED_COUNT));
} else {
Expand Down Expand Up @@ -446,10 +446,10 @@ private void subtestClientBasicStatsDefaultContext(
StatsTestUtils.MetricsRecord record = statsRecorder.pollRecord();
assertNotNull(record);
assertNoServerContent(record);
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue statusTagOld = record.tags.get(DeprecatedCensusConstants.RPC_STATUS);
assertEquals(Status.Code.OK.toString(), statusTagOld.asString());
TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
TagValue statusTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_STATUS);
assertEquals(Status.Code.OK.toString(), statusTag.asString());
assertEquals(
1, record.getMetricAsLongOrFail(DeprecatedCensusConstants.RPC_CLIENT_FINISHED_COUNT));
assertNull(record.getMetric(DeprecatedCensusConstants.RPC_CLIENT_ERROR_COUNT));
Expand Down Expand Up @@ -488,11 +488,16 @@ private void assertRealTimeMetric(
assertNotNull(record);
if (clientSide) {
assertNoServerContent(record);

TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
} else {
assertNoClientContent(record);

TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_SERVER_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
}
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());

assertEquals(expectedValue, record.getMetricAsLongOrFail(measure));
}

Expand Down Expand Up @@ -564,8 +569,8 @@ public void clientStreamNeverCreatedStillRecordStats() {
assertNotNull(record);
assertNoServerContent(record);
assertEquals(1, record.tags.size());
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
assertEquals(
1,
record.getMetricAsLongOrFail(DeprecatedCensusConstants.RPC_CLIENT_STARTED_COUNT));
Expand All @@ -574,10 +579,10 @@ public void clientStreamNeverCreatedStillRecordStats() {
record = statsRecorder.pollRecord();
assertNotNull(record);
assertNoServerContent(record);
methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue statusTagOld = record.tags.get(DeprecatedCensusConstants.RPC_STATUS);
assertEquals(Status.Code.DEADLINE_EXCEEDED.toString(), statusTagOld.asString());
methodTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
TagValue statusTag = record.tags.get(RpcMeasureConstants.GRPC_CLIENT_STATUS);
assertEquals(Status.Code.DEADLINE_EXCEEDED.toString(), statusTag.asString());
assertEquals(
1,
record.getMetricAsLongOrFail(DeprecatedCensusConstants.RPC_CLIENT_FINISHED_COUNT));
Expand Down Expand Up @@ -668,8 +673,8 @@ private void subtestStatsHeadersPropagateTags(boolean propagate, boolean recordS
assertNotNull(clientRecord);
assertNoServerContent(clientRecord);
assertEquals(2, clientRecord.tags.size());
TagValue clientMethodTagOld = clientRecord.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), clientMethodTagOld.asString());
TagValue clientMethodTag = clientRecord.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), clientMethodTag.asString());
TagValue clientPropagatedTag = clientRecord.tags.get(StatsTestUtils.EXTRA_TAG);
assertEquals("extra-tag-value-897", clientPropagatedTag.asString());
}
Expand All @@ -690,7 +695,7 @@ private void subtestStatsHeadersPropagateTags(boolean propagate, boolean recordS
assertEquals(
tagger.toBuilder(clientCtx)
.putLocal(
DeprecatedCensusConstants.RPC_METHOD,
RpcMeasureConstants.GRPC_SERVER_METHOD,
TagValue.create(method.getFullMethodName()))
.build(),
io.opencensus.tags.unsafe.ContextUtils.getValue(serverContext));
Expand All @@ -704,19 +709,19 @@ private void subtestStatsHeadersPropagateTags(boolean propagate, boolean recordS
assertNotNull(serverRecord);
assertNoClientContent(serverRecord);
assertEquals(2, serverRecord.tags.size());
TagValue serverMethodTagOld = serverRecord.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), serverMethodTagOld.asString());
TagValue serverMethodTag = serverRecord.tags.get(RpcMeasureConstants.GRPC_SERVER_METHOD);
assertEquals(method.getFullMethodName(), serverMethodTag.asString());
TagValue serverPropagatedTag = serverRecord.tags.get(StatsTestUtils.EXTRA_TAG);
assertEquals("extra-tag-value-897", serverPropagatedTag.asString());

// Server completion record
serverRecord = statsRecorder.pollRecord();
assertNotNull(serverRecord);
assertNoClientContent(serverRecord);
serverMethodTagOld = serverRecord.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), serverMethodTagOld.asString());
TagValue serverStatusTagOld = serverRecord.tags.get(DeprecatedCensusConstants.RPC_STATUS);
assertEquals(Status.Code.OK.toString(), serverStatusTagOld.asString());
serverMethodTag = serverRecord.tags.get(RpcMeasureConstants.GRPC_SERVER_METHOD);
assertEquals(method.getFullMethodName(), serverMethodTag.asString());
TagValue serverStatusTag = serverRecord.tags.get(RpcMeasureConstants.GRPC_SERVER_STATUS);
assertEquals(Status.Code.OK.toString(), serverStatusTag.asString());
assertNull(serverRecord.getMetric(DeprecatedCensusConstants.RPC_SERVER_ERROR_COUNT));
serverPropagatedTag = serverRecord.tags.get(StatsTestUtils.EXTRA_TAG);
assertEquals("extra-tag-value-897", serverPropagatedTag.asString());
Expand All @@ -731,10 +736,10 @@ private void subtestStatsHeadersPropagateTags(boolean propagate, boolean recordS
StatsTestUtils.MetricsRecord clientRecord = statsRecorder.pollRecord();
assertNotNull(clientRecord);
assertNoServerContent(clientRecord);
TagValue clientMethodTagOld = clientRecord.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), clientMethodTagOld.asString());
TagValue clientStatusTagOld = clientRecord.tags.get(DeprecatedCensusConstants.RPC_STATUS);
assertEquals(Status.Code.OK.toString(), clientStatusTagOld.asString());
TagValue clientMethodTag = clientRecord.tags.get(RpcMeasureConstants.GRPC_CLIENT_METHOD);
assertEquals(method.getFullMethodName(), clientMethodTag.asString());
TagValue clientStatusTag = clientRecord.tags.get(RpcMeasureConstants.GRPC_CLIENT_STATUS);
assertEquals(Status.Code.OK.toString(), clientStatusTag.asString());
assertNull(clientRecord.getMetric(DeprecatedCensusConstants.RPC_CLIENT_ERROR_COUNT));
TagValue clientPropagatedTag = clientRecord.tags.get(StatsTestUtils.EXTRA_TAG);
assertEquals("extra-tag-value-897", clientPropagatedTag.asString());
Expand Down Expand Up @@ -911,8 +916,8 @@ private void subtestServerBasicStatsNoHeaders(
assertNotNull(record);
assertNoClientContent(record);
assertEquals(1, record.tags.size());
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_SERVER_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
assertEquals(
1,
record.getMetricAsLongOrFail(DeprecatedCensusConstants.RPC_SERVER_STARTED_COUNT));
Expand All @@ -926,7 +931,7 @@ private void subtestServerBasicStatsNoHeaders(
tagger
.emptyBuilder()
.putLocal(
DeprecatedCensusConstants.RPC_METHOD,
RpcMeasureConstants.GRPC_SERVER_METHOD,
TagValue.create(method.getFullMethodName()))
.build(),
statsCtx);
Expand Down Expand Up @@ -980,10 +985,10 @@ private void subtestServerBasicStatsNoHeaders(
StatsTestUtils.MetricsRecord record = statsRecorder.pollRecord();
assertNotNull(record);
assertNoClientContent(record);
TagValue methodTagOld = record.tags.get(DeprecatedCensusConstants.RPC_METHOD);
assertEquals(method.getFullMethodName(), methodTagOld.asString());
TagValue statusTagOld = record.tags.get(DeprecatedCensusConstants.RPC_STATUS);
assertEquals(Status.Code.CANCELLED.toString(), statusTagOld.asString());
TagValue methodTag = record.tags.get(RpcMeasureConstants.GRPC_SERVER_METHOD);
assertEquals(method.getFullMethodName(), methodTag.asString());
TagValue statusTag = record.tags.get(RpcMeasureConstants.GRPC_SERVER_STATUS);
assertEquals(Status.Code.CANCELLED.toString(), statusTag.asString());
assertEquals(
1, record.getMetricAsLongOrFail(DeprecatedCensusConstants.RPC_SERVER_FINISHED_COUNT));
assertEquals(
Expand Down
Loading