Uploaded image for project: 'Couchbase .NET client library'
  1. Couchbase .NET client library
  2. NCBC-555

Multi get can fail and return a null StatusCode

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 1.3.8
    • 1.3.7
    • library
    • Server: 2.5.1 cluster - 3 nodes. 1 bucket
      Client: Windows 7 (VM), VS Express 2013, CouchBase .NET SDK 1.3.7, .NET 3.5 or 4

    Description

      Found that performing a multi-get during a rebalance had a couple of issue when the code returns from the following line.

      https://github.com/couchbase/couchbase-net-client/blob/4642a9d3ef32d5a00bcb458f108c8c002c4b1535/src/Enyim.Caching/Memcached/Protocol/Binary/MultiGetOperation.cs#L185

      Client code is using client.ExecuteGet(<array of keys>)

      The main issue is that the 'result.Fail' ends up back with the client and StatusCode == null, even though there's a "not my vbucket" status (7) in response.StatusCode.

      Minor issue is that the result.Fail message doesn't get formatted to include the correlationId, always prints

      {0}

      .

      I've a draft patch that ensures the StatusCode is passed through so that the client can see the failure is not-my-vbucket and issue a retry.

      With my draft patch though I couldn't seem to get the StatusCode passed through without creating an "rv" and returning that.

      Basically:

      result.StatusCode = response.StatusCode;
      return result.Fail(...);

      and

      this.StatusCode = response.StatusCode;
      return result.Fail(...)

      still returned StatusCode of null?

      (patch attached soon)

      Attachments

        Activity

          People

            jwalker Jim Walker
            jwalker Jim Walker
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              PagerDuty