Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-37009

DcpProducer::handleResponse() doesn't handle all valid error codes for Prepare, Commit and abort

    XMLWordPrintable

Details

    • Untriaged
    • Unknown
    • KV Sprint 2020-June

    Description

      Currently a DCP consumer can return the status codes bellow for a Prepare, Commit and abort. However, we don't handle of these status codes in an explicit manor and thus sometimes handle them incorrectly. This should be fixed to ensure we don't end up in situations like rebalance hang e.g. MB-36971 and MB-36794.
      (A status marked as [x] is a handled status code and [ ] for unhandled explicitly)
      DCP Prepare:

      • [ ] ENGINE_E2BIG
      • [ ] ENGINE_EWOULDBLOCK
        // Don’t think we would see from a consumer
      • [ ] ENGINE_LOCKED
      • [ ] ENGINE_SYNC_WRITE_IN_PROGRESS
      • [ ] ENGINE_KEY_EEXISTS
      • [ ] ENGINE_UNKNOWN_COLLECTION

      DCP Commit:
      See common

      DCP Abort:
      See common

      Common between all three ops:

      • [x] ENGINE_SUCCESS
      • [x] ENGINE_DISCONNECT
      • [x] ENGINE_EINVAL (disconnect for all ops)
      • [x] ENGINE_KEY_ENOENT (we don't disconnect for prepare and should only be ever sent by an active)
      • [ ] ENGINE_NOT_MY_VBUCKET
      • [ ] ENGINE_TMPFAIL
      • [ ] ENGINE_ENOMEM
      • [ ] ENGINE_ERANGE

      Attachments

        Issue Links

          Activity

            People

              ashwin.govindarajulu Ashwin Govindarajulu
              richard.demellow Richard deMellow
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                PagerDuty