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

Gracefully close memdclients on pipeline shutdown/reconnect

    XMLWordPrintable

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • core-10.0.5
    • None
    • None
    • 1
    • SDK40: ARM /Graviton, JDBC, SDK42: ErMp v2, JDBC, Connect

    Description

      At present within the ForceConnect call (which reconnects all connections for purposes of picking up new certificates) any in flight operations are terminated with an ErrForcedReconnect. This is not great, and this logic is actually shared by what happens when the SDK becomes aware that the cluster has collections support when previously it didn't - the difference being that in flight requests are terminated with io.EOF.

      What should actually happen is that we create new connections but allow the old connections to stay live until either they get terminated or their op list empties (i.e. all in flight requests are completed).

      There is some consideration here of whether this will cause extra delay in returning to the user in the case that the node has been rebalanced out and is no longer active. In practise any delay should be minimal if at all - the connection itself will get EOF'd and trigger the same drain logic as would on SDK shutdown (and is currently used in this codepath).

      Attachments

        Issue Links

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

          Activity

            There are no comments yet on this issue.

            People

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

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty