mongodb-generic-repository icon indicating copy to clipboard operation
mongodb-generic-repository copied to clipboard

Transaction pattern

Open rohanaceres opened this issue 7 years ago • 9 comments

Hi,

You intend to implement a transaction-like pattern such as two-phase commit?

rohanaceres avatar May 11 '18 20:05 rohanaceres

Hi Rohana,

Thank you for your suggestion.

We could indeed implement a generic wrapper allowing you to define a 2 two phase commit transaction pattern.

The user would have to specify a rollback Action that would reset the state of both documents if something goes wrong.

Doing this in a generic fashion would also mean that a new type of base document should be added, in order to store pending transactions within the document in a generic way. It could be something like a document implementing an interface like ITransactionalDocument<TKey>, exposing a list of pending transactions.

I will have a look :)

alexandre-spieser avatar May 11 '18 21:05 alexandre-spieser

Hi Alexandre,

Thanks for the answer!! But I was thinking about adding support to Mongo 4.0, which has transactions natively. :)

rohanaceres avatar Aug 17 '18 18:08 rohanaceres

Sorry for the late reply I was away on holiday :) Yes you are right, I will release it soon (in a week or so, I have already updated the driver to the latest version).

alexandre-spieser avatar Sep 03 '18 20:09 alexandre-spieser

Hi @alexandre-spieser. Was this ever implemented?

darbio avatar May 06 '19 01:05 darbio

No this is still in the pipeline, I prioritized other issues.

alexandre-spieser avatar May 06 '19 11:05 alexandre-spieser

Hi @alexandre-spieser Is there a way to implement the transactions outside your generic implementation?

Thanks!

iArtur avatar Aug 07 '19 15:08 iArtur

Absolutely, you can override a lot of thing. For the transaction bit, have a look at: https://github.com/alexandre-spieser/mongodb-generic-repository/issues/21

eshkard supplied a zip file with some work around transactions. You can base your work on that.

Hope this helps :)

alexandre-spieser avatar Aug 07 '19 16:08 alexandre-spieser

Thanks @alexandre-spieser it really helped! Do you have any plans to implement the transactions on your repository? If you coul'd put the mongodb transactions and the two-phase commit it will be a killer repo!

Thanks for the work!

iArtur avatar Aug 08 '19 13:08 iArtur

Yeah I'll eventually get to it, it's just that integration testing it takes a LOT of time, and I've been working on other things lately. Feel free to contribute though, it's open source for a reason :) Thanks for the feedback! :)

alexandre-spieser avatar Aug 08 '19 15:08 alexandre-spieser