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

Implement support so Transactions do not need to create visible temporary docs

    XMLWordPrintable

Details

    Description

      Currently to implement Transactions the SDK creates temporary (empty) documents during the execution of a transaction - before it has been committed.
      The documents can "leak" to DCP and non-transactional reads, and hence violate read committed semantics.

      KV needs to provide support for these documents that are created during the running of the transaction, so they are not visible until the transaction is successfully committed.

      Mini design doc: https://docs.google.com/document/d/16y1X_twaG5lmHI3bYPwzNGICtK5DPM9rdRtR8fXpVQA/edit#heading=h.d8v0y452t6e0

      Attachments

        Issue Links

          For Gerrit Dashboard: MB-37374
          # Subject Branch Project Status CR V

          Activity

            jon.strabala Jon Strabala added a comment - - edited

            A quick build / test based on my Java test ( start a transaction create a document then rollback) in my ZIP file shows an Eventing leak of both a document create in OnUpdate and a document delete in OnDelete.  The OnUpdate mutation leak did not exist 1-2 days ago.

            jon.strabala Jon Strabala added a comment - - edited A quick build / test based on my Java test ( start a transaction create a document then rollback) in my ZIP file shows an Eventing leak of both a document create in OnUpdate and a document delete in OnDelete.  The OnUpdate mutation leak did not exist 1-2 days ago.
            graham.pople Graham Pople added a comment -

            Jon Strabala well nothing should have changed yet in transactions behaviour w.r.t. this MB.  This MB just enables the createAsDeleted behaviour in memcached, that the transactions library will use to create inserts as 'shadow documents'.  And that change is going through review so you won't have access to it.

            In short I'm very surprised you weren't seeing the OnUpdate() a couple of days ago.

            graham.pople Graham Pople added a comment - Jon Strabala  well nothing should have changed yet in transactions behaviour w.r.t. this MB.  This MB just enables the createAsDeleted behaviour in memcached, that the transactions library will use to create inserts as 'shadow documents'.  And that change is going through review so you won't have access to it. In short I'm very surprised you weren't seeing the OnUpdate() a couple of days ago.
            jon.strabala Jon Strabala added a comment -

            Graham Pople, I could be wrong maybe I didn't notice it.  I'll see if I save the App log fines and review

            jon.strabala Jon Strabala added a comment - Graham Pople , I could be wrong maybe I didn't notice it.  I'll see if I save the App log fines and review

            Build couchbase-server-6.6.0-7854 contains kv_engine commit bcfde9c with commit message:
            MB-37374: XattrNoDocTest: Make explicit when tests are not supported

            build-team Couchbase Build Team added a comment - Build couchbase-server-6.6.0-7854 contains kv_engine commit bcfde9c with commit message: MB-37374 : XattrNoDocTest: Make explicit when tests are not supported

            Build couchbase-server-7.0.0-2526 contains kv_engine commit bcfde9c with commit message:
            MB-37374: XattrNoDocTest: Make explicit when tests are not supported

            build-team Couchbase Build Team added a comment - Build couchbase-server-7.0.0-2526 contains kv_engine commit bcfde9c with commit message: MB-37374 : XattrNoDocTest: Make explicit when tests are not supported

            People

              owend Daniel Owen
              owend Daniel Owen
              Votes:
              0 Vote for this issue
              Watchers:
              12 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty