Skip to content
This repository has been archived by the owner on Oct 3, 2023. It is now read-only.

Update stats, zpages, prometheus packages with new Tags API #307

Merged
merged 2 commits into from
Jan 29, 2019

Conversation

mayurkale22
Copy link
Member

Fixes #305

This PR contains breaking API changes, highlighted in the CHANGELOG with old and new code.

TagValue[] {
const tagValues: TagValue[] = [];

// ignore not found key values.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For tag keys that are not found, we should use null or undefined as the tag value. See https://github.com/census-instrumentation/opencensus-java/blob/5a97afdefdb2d9f4213264d91fa67b646adbf5d9/impl_core/src/main/java/io/opencensus/implcore/stats/RecordUtils.java#L86-L87.

The tag values returned from this method should have the same size as tag keys.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This project has strictNullChecks set to false in tsconfig, hence didn't add null for missing tag values.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The caveat here is the tag values returned must match the order of tag keys. If we skip any tag values then they became mismatched.

One example: a view is defined to break down latencies by method and caller. The tag keys are [method, caller] in order. If a record is called with only tag caller:c1, this method will return tag values [c1]. Then c1 will be matched with method.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make sense, For tag keys that are not found, replaced with null as the tag value.

@@ -175,5 +175,49 @@ describe('Recorder', () => {
});
}
});

describe('getTagValues()', () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be another test case on missing and mis-ordered tag values to columns.

TagValue[] {
const tagValues: TagValue[] = [];

// ignore not found key values.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The caveat here is the tag values returned must match the order of tag keys. If we skip any tag values then they became mismatched.

One example: a view is defined to break down latencies by method and caller. The tag keys are [method, caller] in order. If a record is called with only tag caller:c1, this method will return tag values [c1]. Then c1 will be matched with method.

@mayurkale22 mayurkale22 merged commit 77eada8 into census-instrumentation:master Jan 29, 2019
@mayurkale22 mayurkale22 deleted the use_tags branch January 29, 2019 07:10
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants