Uploaded image for project: 'Couchbase Go SDK'
  1. Couchbase Go SDK
  2. GOCBC-1256

Agent attempts to fallback to http polling when no http addresses exist

    XMLWordPrintable

Details

    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • core-10.1.1, 2.4.1
    • None
    • None
    • CAO 2.3
      CB Server 7.1.0-2434
      gocb 2.3
    • 1

    Description

      On a CAO cluster with 1 node, using server 7.1, we're failing to connect to the bucket when adding documents. We receive this error from bucket.WaitUntilReady:

      unambiguous timeout | {"InnerError":{"InnerError":{"InnerError":{},"Message":"unambiguous timeout"}},"OperationID":"WaitUntilReady","Opaque":"","TimeObserved":60001318307,"RetryReasons":["NOT_READY","BUCKET_NOT_FOUND"],"RetryAttempts":128,"LastDispatchedTo":"","LastDispatchedFrom":"","LastConnectionID":""} 

      This only happens with 1 node (if we change to 3 nodes, the test passes fine), and also only happens on 7.1 (on 7.0.3, the test passes fine.). The bucket is responding to API calls from the operator via /pools/default/buckets... and also appears on the server UI.

      I've attached cbopinfo, cbinfo, the operator logs, and the SDK logs from gocb.SetLogger(gocb.VerboseStdioLogger())

      Attachments

        Issue Links

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

          Activity

            I talked to Roo Thorp and it looks like SRV records are being used. When this happens we only set the memd addresses for the gocbcore agent, we do no translation to also populate the http addresses. The issue here is that the server is replying to our SELECT BUCKET with an ENOENT so we automatically fallback to the http poller (this is required for bootstrapping against a non-kv node). However, the http poller has nothing to poll so just sits there and despite the underlying connections being built ok we can never fetch a cluster config.

            charles.dixon Charles Dixon added a comment - I talked to Roo Thorp and it looks like SRV records are being used. When this happens we only set the memd addresses for the gocbcore agent, we do no translation to also populate the http addresses. The issue here is that the server is replying to our SELECT BUCKET with an ENOENT so we automatically fallback to the http poller (this is required for bootstrapping against a non-kv node). However, the http poller has nothing to poll so just sits there and despite the underlying connections being built ok we can never fetch a cluster config.

            People

              charles.dixon Charles Dixon
              roo.thorp Roo Thorp
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty