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

Lost cleanup blocks gocbcore response callback on client record error

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • core-10.1.3
    • None
    • None
    • 1
    • SDK24: Lambda + Known Issues

    Description

      In the case that process returns an error in this block https://github.com/couchbase/gocbcore/blob/master/transactions_lostcleanup.go#L341-L382 then the callback will block for 1 second. This means that the memdclient that is serving that response will be blocked and unable to process any further responses until the callback is released within the next call to perLocation, after the 1 second wait has elapsed.

      This is especially an issue where the same Agent is being used by multiple collections and one or more collections is problematic (auth errors for instance) and the Agent is setup with a kv pool size of 1 (which is the default).

      Attachments

        Issue Links

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

          Activity

            Hi Sitaram Vemulapalli do you have any thoughts on how this may impact query? I think that the key piece of information is how is config.LostCleanupATRLocationProvider is implemented? I presume that when query receives a request containing "atrcollection" and it doesn't know that location then it gets picked up by that function?

            charles.dixon Charles Dixon added a comment - Hi Sitaram Vemulapalli do you have any thoughts on how this may impact query? I think that the key piece of information is how is config.LostCleanupATRLocationProvider is implemented? I presume that when query receives a request containing "atrcollection" and it doesn't know that location then it gets picked up by that function?

            config.LostCleanupATRLocationProvider()  is not much. It is returns all the collections names that it knows as atrcollections in transactions.

            Followed by BucketPovider call back that one gives Agent() that one may createAgent if not already present.

             

            We always use 

             

            config.KVConfig.PoolSize = int((util.NumCPU() + 1) / 2)

             

            Sitaram.Vemulapalli Sitaram Vemulapalli added a comment - config.LostCleanupATRLocationProvider()  is not much. It is returns all the collections names that it knows as atrcollections in transactions. Followed by BucketPovider call back that one gives Agent() that one may createAgent if not already present.   We always use    config.KVConfig.PoolSize = int((util.NumCPU() + 1) / 2)  

            People

              charles.dixon Charles Dixon
              charles.dixon Charles Dixon
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty