Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
MODE-2728 Fixes transaction leak in FileDb

MODE-2670 Changes the implementation of the internal repository locking The new lock implementation uses a bare-bone AbstractQueuedSynchronizer implementation because in ModeShape's case locks have to be able to be unlocked from other threads than the owning threads (transaction rollbacks). The previous ReentrantLock implementation would obviously not work.

This commit also changes the way the persistence stores deal with transactions: instead of holding onto the "current" transaction via a ThreadLocal variable, they will now rely on their internal mapping of tx ids. This is provided by ModeShape for each transaction. Therefore, thread-locality is no longer an issue.

The commit further changes some of the ways in which internal transactions are used during repository startup, making sure some operations are grouped and some - the preconfigured workspaces - are created up-front within a single transaction.

  1. … 19 more files in changeset.
MODE-2623 Fixes the loading of documents from the persistent store after exclusive locks are obtained The previous code always loaded a fresh copy of the latest persisted (i.e. successfully committed) information and did not take into account the fact that a user transaction might span multiple workspace cache usages. This is particularly evident when dealing with the jcr:system area and SystemContent in general, via multiple calls coming from different API methods.

  1. … 6 more files in changeset.
MODE-2596 Fixes the concurrent initialization of the same workspace cache with user transactions The problem in this particular case was the fact that a user transaction off a certain thread might not have been committed while another thread was seeing the ws cache as already initialized. The solution was to make sure ws cache initialization takes place inside local transactions by suspending/resuming any potential outside transactions.

  1. … 9 more files in changeset.
MODE-2587 Updates backup and restore to perform the two operations in batches This should fix any memory issues caused by the previous implementation, where everything was loaded and written to in one big batch.

  1. … 14 more files in changeset.
MODE-2546,MODE-2569 Fixes several locking and concurrency issues The previous exclusive locking logic relied on ReentrantLock.hasQueuedThreads which is not reliable and correct. Also, the FileDB code did not correctly use the MapDB tx API causing various corruption issues in multi-threaded cases. This commit also refactors most of the clustering tests trying to minimize the number of cluster services stopped/started with each test since these operations take a lot of time.

  1. … 29 more files in changeset.
MODE-2569 Adds file-persistence to the Wildfly kit This also changes the way the kit integration tests are run so that the actual WF xml configuration files from the kit are used instead of local test-copies.

  1. … 36 more files in changeset.
MODE-2528 Refactors the relational-persistence-provider to provide better support for different types of DBs This also changes the default serialization format to Bson bytes from Json strings, which are very fast to write but slower to read.

  1. … 21 more files in changeset.
MODE-2569 Adds a file and in-memory persistence provider based on H2's MVStore. Changes most of the unit tests to use the new provider.

    • -0
    • +237
    • -0
    • +43
    • -0
    • +34
    • -0
    • +11
  1. … 54 more files in changeset.