Skip to content

Couchbase 2.x Instrumentation Rework #3045

@tippmar-nr

Description

@tippmar-nr

Describe the story, please be clear on scope of the story.

Somewhere between CouchbaseNetClient v2.3.8 and 2.7.27 (the last 2.x release), multiple overloads for some methods that we instrument were added.

Our current instrumentation for many Couchbase methods doesn't consider the parameters on the method, resulting in multiple instrumentation of the "same" method call

For example,

        public IOperationResult<T> Get<T>(string key)
        {
            return Get<T>(key, GlobalTimeout);
        }

now calls

        public IOperationResult<T> Get<T>(string key, TimeSpan timeout)
        {
            var operation = new Get<T>(key, null, _transcoder, timeout.GetMilliseconds())
            {
                BucketName = Name
            };
            return _requestExecuter.SendWithRetry(operation);
        }

but our instrumentation only looks for

<exactMethodMatcher methodName="GetAsync"/>

We need to inspect each library version to determine where the additional overloads were added and update our instrumentation.xml for Couchbase 2.x to be version-aware so that we can eliminate the multiple instrumentation.

Acceptance Criteria

All Couchbase 2.x methods are instrumented only once per call. All unbounded integration tests for Couchbase 2.x pass.

Estimates

Please provide initial t-shirt size
M

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions