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

Increment causing VBucketBelongsToAnotherServer exception to bubble up instead of retrying

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.6.1
    • Component/s: None
    • Labels:
      None

      Description

      Seems a regression of NCBC-808.

      To reproduce:
      1- Set up a 3 node cluster with KV service on all.
      2- Remove one node and start rebalance.
      3- Immediately run the following code:

      while(true)
      {
          var result = bucket.Increment(Guid.NewGuid().ToString());
          if (result.Status == Couchbase.IO.ResponseStatus.VBucketBelongsToAnotherServer)
          {
              Console.WriteLine("dd");
          }
      }
      

      You will see that VBucketBelongsToAnotherServer bubbles up.

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

            Hide
            jmorris Jeff Morris added a comment -

            Thanks David Saadeh, I'll look into this asap. What SDK and CB version should I test with?

            Show
            jmorris Jeff Morris added a comment - Thanks David Saadeh , I'll look into this asap. What SDK and CB version should I test with?
            Hide
            david.saadeh David Saadeh added a comment -

            Jeff Morris Test case come off of Couchbase Server 4.1.2, and SDK 2.5.12. Probably affects other versions as well, have not tested. Thanks

            Show
            david.saadeh David Saadeh added a comment - Jeff Morris Test case come off of Couchbase Server 4.1.2, and SDK 2.5.12. Probably affects other versions as well, have not tested. Thanks
            Hide
            mike.goldsmith Michael Goldsmith added a comment -

            I think I've found the issue;

            When dispatching synchronous Increment operations, we were manually determining the server and dispatching directly to it, with some custom response handling. For the most part, the process of selecting the server and handling the response, including error messages / setting status codes, is handled by the RequestExecutor layer. All the other sync & async versions of Increment & Decrement, for both Couchbase and Memcached, buckets used the configured request executor.

            The following Gerrit change set updates the sync Increment method use the request executor: http://review.couchbase.org/c/97401/

            Show
            mike.goldsmith Michael Goldsmith added a comment - I think I've found the issue; When dispatching synchronous Increment operations, we were manually determining the server and dispatching directly to it, with some custom response handling. For the most part, the process of selecting the server and handling the response, including error messages / setting status codes, is handled by the RequestExecutor layer. All the other sync & async versions of Increment & Decrement, for both Couchbase and Memcached, buckets used the configured request executor. The following Gerrit change set updates the sync Increment method use the request executor:  http://review.couchbase.org/c/97401/

              People

              • Assignee:
                mike.goldsmith Michael Goldsmith
                Reporter:
                david.saadeh David Saadeh
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes

                    PagerDuty

                    Error rendering 'com.pagerduty.jira-server-plugin:PagerDuty'. Please contact your Jira administrators.