€cdocutils.nodes document q)q}q(U nametypesq}q(Xuc24qˆXhistoryqˆX.use case 24 - mns and cns support transactionsqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUuc24qhUhistoryqhU,use-case-24-mns-and-cns-support-transactionsquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC24:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/24_uc.txtqUtagnameqUtargetqU attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes section q*)q+}q,(hUhhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes title q6)q7}q8(hX.Use Case 24 - MNs and CNs Support Transactionsq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 24Uindex-0qIUNtqJ(hHXUC24hIUNtqK(hHX transactionhIUNtqL(hHXevent granularityhIUNtqMeUinlineqN‰uh(Kh)hh]ubh)qO}qP(hUhh+hhhhh }qQ(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qR)qS}qT(hUhh+hhh-}hUdefinition_listqUh }qV(h$]h%]h#]h"]qWhIah&]uh(Nh)hh3}qXhIhOsh]qY(cdocutils.nodes definition_list_item qZ)q[}q\(hX+Revisions View document revision history_. hhShhhUdefinition_list_itemq]h }q^(h$]h%]h#]h"]h&]uh(K h]q_(cdocutils.nodes term q`)qa}qb(hX Revisionsqchh[hhhUtermqdh }qe(h$]h%]h#]h"]h&]uh(K h]qfh=X Revisionsqg…qh}qi(hhchhaubaubcdocutils.nodes definition qj)qk}ql(hUh }qm(h$]h%]h#]h"]h&]uhh[h]qncdocutils.nodes paragraph qo)qp}qq(hX View document revision history_.hhkhhhU paragraphqrh }qs(h$]h%]h#]h"]h&]uh(K h]qt(h=XView document revision qu…qv}qw(hXView document revision hhpubcdocutils.nodes reference qx)qy}qz(hXhistory_Uresolvedq{KhhphU referenceq|h }q}(UnameXhistoryq~UrefuriqX”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/24_uc.txtq€h"]h#]h$]h%]h&]uh]qh=Xhistoryq‚…qƒ}q„(hUhhyubaubh=X.…q…}q†(hX.hhpubeubahU definitionq‡ubeubhZ)qˆ}q‰(hX­Goal Transactions - CNs and MNs should support transaction sets where operations all complete successfully or get rolled back (e.g., upload both data and metadata records). hhShhhh]h }qŠ(h$]h%]h#]h"]h&]uh(Kh)hh]q‹(h`)qŒ}q(hXGoalqŽhhˆhhhhdh }q(h$]h%]h#]h"]h&]uh(Kh]qh=XGoalq‘…q’}q“(hhŽhhŒubaubhj)q”}q•(hUh }q–(h$]h%]h#]h"]h&]uhhˆh]q—ho)q˜}q™(hX§Transactions - CNs and MNs should support transaction sets where operations all complete successfully or get rolled back (e.g., upload both data and metadata records).qšhh”hhhhrh }q›(h$]h%]h#]h"]h&]uh(K h]qœh=X§Transactions - CNs and MNs should support transaction sets where operations all complete successfully or get rolled back (e.g., upload both data and metadata records).q…qž}qŸ(hhšhh˜ubaubahh‡ubeubhZ)q }q¡(hXÊSummary Transactions help ensure stability of the system, so that the chance of partial change to content is minimized. Note that this use case is really stated as a requirement of the DataONE system. hhShhhh]h }q¢(h$]h%]h#]h"]h&]uh(Kh)hh]q£(h`)q¤}q¥(hXSummaryq¦hh hhhhdh }q§(h$]h%]h#]h"]h&]uh(Kh]q¨h=XSummaryq©…qª}q«(hh¦hh¤ubaubhj)q¬}q­(hUh }q®(h$]h%]h#]h"]h&]uhh h]q¯(ho)q°}q±(hXoTransactions help ensure stability of the system, so that the chance of partial change to content is minimized.q²hh¬hhhhrh }q³(h$]h%]h#]h"]h&]uh(Kh]q´h=XoTransactions help ensure stability of the system, so that the chance of partial change to content is minimized.qµ…q¶}q·(hh²hh°ubaubho)q¸}q¹(hXPNote that this use case is really stated as a requirement of the DataONE system.qºhh¬hhhhrh }q»(h$]h%]h#]h"]h&]uh(Kh]q¼h=XPNote that this use case is really stated as a requirement of the DataONE system.q½…q¾}q¿(hhºhh¸ubaubehh‡ubeubhZ)qÀ}qÁ(hXBActors - Member Nodes - Coordinating Nodes - Investigator toolkit hhShhhh]h }qÂ(h$]h%]h#]h"]h&]uh(Kh)hh]qÃ(h`)qÄ}qÅ(hXActorsqÆhhÀhhhhdh }qÇ(h$]h%]h#]h"]h&]uh(Kh]qÈh=XActorsqÉ…qÊ}qË(hhÆhhÄubaubhj)qÌ}qÍ(hUh }qÎ(h$]h%]h#]h"]h&]uhhÀh]qÏcdocutils.nodes bullet_list qÐ)qÑ}qÒ(hUh }qÓ(UbulletqÔX-h"]h#]h$]h%]h&]uhhÌh]qÕ(cdocutils.nodes list_item qÖ)q×}qØ(hX Member NodesqÙh }qÚ(h$]h%]h#]h"]h&]uhhÑh]qÛho)qÜ}qÝ(hhÙhh×hhhhrh }qÞ(h$]h%]h#]h"]h&]uh(Kh]qßh=X Member Nodesqà…qá}qâ(hhÙhhÜubaubahU list_itemqãubhÖ)qä}qå(hXCoordinating Nodesqæh }qç(h$]h%]h#]h"]h&]uhhÑh]qèho)qé}qê(hhæhhähhhhrh }që(h$]h%]h#]h"]h&]uh(Kh]qìh=XCoordinating Nodesqí…qî}qï(hhæhhéubaubahhãubhÖ)qð}qñ(hXInvestigator toolkit h }qò(h$]h%]h#]h"]h&]uhhÑh]qóho)qô}qõ(hXInvestigator toolkitqöhhðhhhhrh }q÷(h$]h%]h#]h"]h&]uh(Kh]qøh=XInvestigator toolkitqù…qú}qû(hhöhhôubaubahhãubehU bullet_listqüubahh‡ubeubhZ)qý}qþ(hXWPreconditions - DataONE operational - Some data / metadata transfer operation is due. hhShhhh]h }qÿ(h$]h%]h#]h"]h&]uh(Kh)hh]r(h`)r}r(hX Preconditionsrhhýhhhhdh }r(h$]h%]h#]h"]h&]uh(Kh]rh=X Preconditionsr…r}r(hjhjubaubhj)r }r (hUh }r (h$]h%]h#]h"]h&]uhhýh]r hÐ)r }r(hUh }r(hÔX-h"]h#]h$]h%]h&]uhj h]r(hÖ)r}r(hXDataONE operational h }r(h$]h%]h#]h"]h&]uhj h]rho)r}r(hXDataONE operationalrhjhhhhrh }r(h$]h%]h#]h"]h&]uh(Kh]rh=XDataONE operationalr…r}r(hjhjubaubahhãubhÖ)r}r(hX0Some data / metadata transfer operation is due. h }r(h$]h%]h#]h"]h&]uhj h]r ho)r!}r"(hX/Some data / metadata transfer operation is due.r#hjhhhhrh }r$(h$]h%]h#]h"]h&]uh(Kh]r%h=X/Some data / metadata transfer operation is due.r&…r'}r((hj#hj!ubaubahhãubehhüubahh‡ubeubhZ)r)}r*(hXJTriggers - Metadata transfer is in process and there is a network failure hhShhhh]h }r+(h$]h%]h#]h"]h&]uh(K"h)hh]r,(h`)r-}r.(hXTriggersr/hj)hhhhdh }r0(h$]h%]h#]h"]h&]uh(K"h]r1h=XTriggersr2…r3}r4(hj/hj-ubaubhj)r5}r6(hUh }r7(h$]h%]h#]h"]h&]uhj)h]r8hÐ)r9}r:(hUh }r;(hÔX-h"]h#]h$]h%]h&]uhj5h]r<hÖ)r=}r>(hX?Metadata transfer is in process and there is a network failure h }r?(h$]h%]h#]h"]h&]uhj9h]r@ho)rA}rB(hX>Metadata transfer is in process and there is a network failurerChj=hhhhrh }rD(h$]h%]h#]h"]h&]uh(K"h]rEh=X>Metadata transfer is in process and there is a network failurerF…rG}rH(hjChjAubaubahhãubahhüubahh‡ubeubhZ)rI}rJ(hXaPost Conditions - The transfer changes should be rolled back to the state before the operation. hhShhhh]h }rK(h$]h%]h#]h"]h&]uh(K&h)hh]rL(h`)rM}rN(hXPost ConditionsrOhjIhhhhdh }rP(h$]h%]h#]h"]h&]uh(K&h]rQh=XPost ConditionsrR…rS}rT(hjOhjMubaubhj)rU}rV(hUh }rW(h$]h%]h#]h"]h&]uhjIh]rXhÐ)rY}rZ(hUh }r[(hÔX-h"]h#]h$]h%]h&]uhjUh]r\hÖ)r]}r^(hXOThe transfer changes should be rolled back to the state before the operation. h }r_(h$]h%]h#]h"]h&]uhjYh]r`ho)ra}rb(hXMThe transfer changes should be rolled back to the state before the operation.rchj]hhhhrh }rd(h$]h%]h#]h"]h&]uh(K%h]reh=XMThe transfer changes should be rolled back to the state before the operation.rf…rg}rh(hjchjaubaubahhãubahhüubahh‡ubeubeubcdocutils.nodes comment ri)rj}rk(hXA@startuml images/24_seq.png participant "CRUD API" as c_crud << Coordinating Node >> participant "Object Store" as c_ostore << Coordinating Node >> participant "CRUD API" as m_crud << Member Node >> c_crud -> c_ostore: beginTransaction() c_ostore --> c_crud: transactionHandle c_crud -> m_crud: get(token, PID) alt Success m_crud --> c_crud: object c_crud -> c_ostore: commitTransaction(transactionHandle) c_crud -> c_ostore: updateSystemMetadata(PID) else Transfer failure c_crud -> c_ostore: rollbackTransaction(transactionHandle) c_ostore --> c_crud: ACK end @endumlhh+hhhUcommentrlh }rm(U xml:spacernUpreserveroh"]h#]h$]h%]h&]uh(K9h)hh]rph=XA@startuml images/24_seq.png participant "CRUD API" as c_crud << Coordinating Node >> participant "Object Store" as c_ostore << Coordinating Node >> participant "CRUD API" as m_crud << Member Node >> c_crud -> c_ostore: beginTransaction() c_ostore --> c_crud: transactionHandle c_crud -> m_crud: get(token, PID) alt Success m_crud --> c_crud: object c_crud -> c_ostore: commitTransaction(transactionHandle) c_crud -> c_ostore: updateSystemMetadata(PID) else Transfer failure c_crud -> c_ostore: rollbackTransaction(transactionHandle) c_ostore --> c_crud: ACK end @endumlrq…rr}rs(hUhjjubaubcdocutils.nodes image rt)ru}rv(hX.. image:: images/24_seq.png hh+hhhUimagerwh }rx(UuriX!design/UseCases/images/24_seq.pngryh"]h#]h$]h%]U candidatesrz}r{U*jysh&]uh(K;h)hh]ubho)r|}r}(hX•*Figure 1.* Interactions for use case 24, Transfer Rollback due to Failure. Simple transaction control around a get operation by a CN against and MN.hh+hhhhrh }r~(h$]h%]h#]h"]h&]uh(K(h]r?hahI]r@hOauub.