- Explore Operational Transform options
- Look into support for
{multi: true}
- Support for
upsert
- Possible support for locking documents used in pending transactions
- Refactor and document code for better maintainability
- Sufficient test coverage and security audit
- Add/improve support for other/existing mongo operators
- Fix for an issue where transactions with
overridePermissionCheck = true
that were successful on the server, but unsuccessful when simulated on the client, left the client in a bad state
- Merged PR that retries repair of transactions that were being repaired during an app crash, when
retryFailedRepairs
istrue
- Changed states of items on a transaction and the transaction state itself to
rolledBack
when therepairMode
is set torollback
(it was previouslyundone
, which was deceptive and not what we're after - i.e. removing the transaction from the mix completely) - Added a second parameter (
retryFailedRepairs
- boolean) to the functiontx._repairAllIncomplete(mode, retryFailedRepairs)
, in case anyone wants to force another attempt to repair transactions that have have already failed to be repaired
- Accept an object literal as first param
tx.start
calls to provide an options hash; previously only accepted string for first param (description text) and object literal for second param (options hash). One of the fields of the options hash can bedescription
- Options to rethrow exceptions caught during a commit (#72)
- Fixes for removed documents not being saved properly (#73)
- Fix for hard removed documents that prevented them from being re-removed after a transaction (#74)
- Fixed a part of code that wasn't refactored properly for multiple transactions (#76)
- Upserts throw explicit exceptions (#78)
- You can now pass a value for
rethrowCommitError
,forceCommitBeforeStart
,useExistingTransaction
(allfalse
by default) in the options hash when starting a transaction that will auto-commit
- Refactored package internals to make it more robust when multiple transactions are happening concurrently
- Fixed a bug with logging (introduced in last update) which broke a few tests that went unnoticed
- Fixed bug in which
Collection.insert
was wrongly mutating thenewDoc
object being inserted - Added
tx.getContext
method - Added
tx.mergeContext
andtx.setContextPathValue
methods forlodash
users - Changed absolute to relative symlink from the test app to the transactions package so everyone can run tests
- Fixed the bug introduced with the client idleTimeout feature (i.e. a long wait for the server to process a committed queue of actions leads to a client-initiated rollback)
- Updated weak dependency on
aldeed:collection2
package to version 2.10.0 (from 2.9.0)
- Added
forceCommitBeforeStart
option as a means of strictly keeping the app in a good state (at the cost of potentially messy data if there are bugs in the app) - Made the client time out and auto-rollback if a transaction is open longer than a certain (configurable) number of milliseconds
- Added
check
package as a dependency
- Closes #57 where write operations were async when they should have been sync
- Fixes a bug with the ordering of actions when trying to repair a broken commit and removes
SimpleSchema.debug = true;
- Fixes a bug with $addToSet and $pull where inverses were not being recorded correctly
- Restores a semblance of latency compensation in some cases
- Fixes a bug where an error is thrown unnecessarily on an empty transaction
- Closes issue #49 (insert callbacks with collection2 not working) and #50 (undo of $set modifiers with multiple fields not restoring previous state correctly)
- Closes an issue (#48) in which Meteor.settings isn't defined for android builds and error gets thrown
- Closes an issue (#47) related to security, where transactions originating on the client could override the
tx.checkPermission
function on the server
- Fixes for a number of issues, the chief one being a broken rollback mechanism
- A small change in which auto committed insert transactions are not processed client side, but are sent to the server for writes, like other transactions in
tx.start() ... tx.commit()
blocks, removing the need for allow/deny rules for inserts
- First release using new storage format for transactions and having db state recovery options
- Last stable(ish) release using naive/optimistic transactions with no db state recoverability