/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 / 2 0 2 1 ĠL it ote Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . lit ote . km ongo . coroutine . issues Ċ Ċ import Ġcom . mongodb . Write Concern Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Test Ċ import Ġorg . lit ote . km ongo . coroutine . K Mongo Reactive Streams Coroutine Base Test Ċ import Ġorg . lit ote . km ongo . coroutine . abort Transaction And Await Ċ import Ġorg . lit ote . km ongo . coroutine . commit Transaction And Await Ċ import Ġorg . lit ote . km ongo . model . Friend Ċ import Ġkotlin . test . assertEquals Ċ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ class ĠIssue 1 9 8 No Value Received Via On Next Ġ: ĠK Mongo Reactive Streams Coroutine Base Test < Friend >() Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave Two Objects In Same Transaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġthe Ġcollection Ġdoes Ġnot Ġpre - exist , Ġthe Ġmulti - document Ġtransaction Ġfails ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// see Ġalso Ġhttps :// docs . mongodb . com / manual / core / transactions - production - consider ation /# ac qu iring - locks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . with Write Concern ( Write Concern . MA J ORITY ). create Collection ( col . collection . namespace . collection Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmongo Client . start Session (). use Ġ{ Ġclient Session Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session . start Transaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . insert One ( client Session , ĠFriend (" Bob ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . insert One ( client Session , ĠFriend (" Jo e ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session . commit Transaction And Await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcol . count Documents ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . delete Many () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġabort Two Objects In Same Transaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġthe Ġcollection Ġdoes Ġnot Ġpre - exist , Ġthe Ġmulti - document Ġtransaction Ġfails ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// see Ġalso Ġhttps :// docs . mongodb . com / manual / core / transactions - production - consider ation /# ac qu iring - locks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . with Write Concern ( Write Concern . MA J ORITY ). create Collection ( col . collection . namespace . collection Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmongo Client . start Session (). use Ġ{ Ġclient Session Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session . start Transaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . insert One ( client Session , ĠFriend (" Bob ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . insert One ( client Session , ĠFriend (" Jo e ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session . abort Transaction And Await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcol . count Documents ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . delete Many () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }