Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.14
    • mongomk
    • None

    Description

      Currently, the MongoMK synchronizes on write (commit, merge) as well as on some read operations (getNodes, diffImpl).

      Synchronization on read operations (specially getNodes) should no longer be needed. I will disable it for now, but we might need more test cases as well.

      Attachments

        Issue Links

          Activity

            thomasm Thomas Mueller added a comment -

            Revision 1529804: synchronization on getNodes removed

            thomasm Thomas Mueller added a comment - Revision 1529804: synchronization on getNodes removed

            Relaxed write synchronization in MongoMK in http://svn.apache.org/r1534626

            The newly introduced CommitQueue coordinates commits based on the commit revision and makes sure changes are reported back to the ChangeDispatcher in a consistent sequence. I.e. the commit queue delays commits when there is a pending commit with an older revision.

            Regular commits done by MongoMK.commit() and MongoMK.merge() may now proceed concurrently. A background write currently blocks regular commits. Oak cannot fully leverage the improved concurrency right now, because of the merge lock in KernelNodeStore.

            The new ConcurrentUpdatesTest illustrates the improved concurrency by using MongoMK directly without oak-core on top. The test peaks at about 1000 concurrent updates per second on my machine compared to 370 updates per second with a single thread. The single MongoDB becomes the bottleneck.

            mreutegg Marcel Reutegger added a comment - Relaxed write synchronization in MongoMK in http://svn.apache.org/r1534626 The newly introduced CommitQueue coordinates commits based on the commit revision and makes sure changes are reported back to the ChangeDispatcher in a consistent sequence. I.e. the commit queue delays commits when there is a pending commit with an older revision. Regular commits done by MongoMK.commit() and MongoMK.merge() may now proceed concurrently. A background write currently blocks regular commits. Oak cannot fully leverage the improved concurrency right now, because of the merge lock in KernelNodeStore . The new ConcurrentUpdatesTest illustrates the improved concurrency by using MongoMK directly without oak-core on top. The test peaks at about 1000 concurrent updates per second on my machine compared to 370 updates per second with a single thread. The single MongoDB becomes the bottleneck.

            Implementation in the MongoNodeStore and MongoMK is complete. There are some missing pieces like looping over many child nodes efficiently in the MongoNodeState implementation, but I will open a separate issue about this.

            mreutegg Marcel Reutegger added a comment - Implementation in the MongoNodeStore and MongoMK is complete. There are some missing pieces like looping over many child nodes efficiently in the MongoNodeState implementation, but I will open a separate issue about this.
            stillalex Alex Deparvu added a comment -

            bulk close for the 0.14 release

            stillalex Alex Deparvu added a comment - bulk close for the 0.14 release

            People

              mreutegg Marcel Reutegger
              thomasm Thomas Mueller
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: