€cdocutils.nodes document q)q}q(U nametypesq}q(X$use case 25 - detect damaged contentqNXuc25qˆXhistoryqˆuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU"use-case-25-detect-damaged-contentqhUuc25qhUhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC25:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/25_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 25 - Detect Damaged Contentq9hh+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 25Uindex-0qIUNtqJ(hHXUC25hIUNtqK(hHX preservationhIUNtqL(hHXbit rothIUNtqM(hHX damaged fileshIUNtqNeUinlineqO‰uh(Kh)hh]ubh)qP}qQ(hUhh+hhhhh }qR(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qS)qT}qU(hUhh+hhh-}hUdefinition_listqVh }qW(h$]h%]h#]h"]qXhIah&]uh(Nh)hh3}qYhIhPsh]qZ(cdocutils.nodes definition_list_item q[)q\}q](hX+Revisions View document revision history_. hhThhhUdefinition_list_itemq^h }q_(h$]h%]h#]h"]h&]uh(K h]q`(cdocutils.nodes term qa)qb}qc(hX Revisionsqdhh\hhhUtermqeh }qf(h$]h%]h#]h"]h&]uh(K h]qgh=X Revisionsqh…qi}qj(hhdhhbubaubcdocutils.nodes definition qk)ql}qm(hUh }qn(h$]h%]h#]h"]h&]uhh\h]qocdocutils.nodes paragraph qp)qq}qr(hX View document revision history_.hhlhhhU paragraphqsh }qt(h$]h%]h#]h"]h&]uh(K h]qu(h=XView document revision qv…qw}qx(hXView document revision hhqubcdocutils.nodes reference qy)qz}q{(hXhistory_Uresolvedq|KhhqhU referenceq}h }q~(UnameXhistoryqUrefuriq€X”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/25_uc.txtqh"]h#]h$]h%]h&]uh]q‚h=Xhistoryqƒ…q„}q…(hUhhzubaubh=X.…q†}q‡(hX.hhqubeubahU definitionqˆubeubh[)q‰}qŠ(hX^Goal System should scans for damaged/defaced data and metadata using some validation process. hhThhhh^h }q‹(h$]h%]h#]h"]h&]uh(K h)hh]qŒ(ha)q}qŽ(hXGoalqhh‰hhhheh }q(h$]h%]h#]h"]h&]uh(K h]q‘h=XGoalq’…q“}q”(hhhhubaubhk)q•}q–(hUh }q—(h$]h%]h#]h"]h&]uhh‰h]q˜hp)q™}qš(hXXSystem should scans for damaged/defaced data and metadata using some validation process.q›hh•hhhhsh }qœ(h$]h%]h#]h"]h&]uh(K h]qh=XXSystem should scans for damaged/defaced data and metadata using some validation process.qž…qŸ}q (hh›hh™ubaubahhˆubeubh[)q¡}q¢(hXSummary All content being added or incorporated into the DataONE infrastructure has checksums computed, providing a unique signature specific to the particular sequence of bytes present in that object. Any change to the object will result in a different checksum being calculated for that object. It would be prohibitive to continually compute checksums for all content contained in the system. Therefore, the system should have provision for periodic, random checks that compute the checksum for objects and compare with the original. The system should automatically replace content determined to be incorrect, and system content managers should be notified of such events. Alternatively, bad content could be queued for processing, which is semi-automatically processed by the data managers. hhThhhh^h }q£(h$]h%]h#]h"]h&]uh(Kh)hh]q¤(ha)q¥}q¦(hXSummaryq§hh¡hhhheh }q¨(h$]h%]h#]h"]h&]uh(Kh]q©h=XSummaryqª…q«}q¬(hh§hh¥ubaubhk)q­}q®(hUh }q¯(h$]h%]h#]h"]h&]uhh¡h]q°(hp)q±}q²(hX All content being added or incorporated into the DataONE infrastructure has checksums computed, providing a unique signature specific to the particular sequence of bytes present in that object. Any change to the object will result in a different checksum being calculated for that object.q³hh­hhhhsh }q´(h$]h%]h#]h"]h&]uh(Kh]qµh=X All content being added or incorporated into the DataONE infrastructure has checksums computed, providing a unique signature specific to the particular sequence of bytes present in that object. Any change to the object will result in a different checksum being calculated for that object.q¶…q·}q¸(hh³hh±ubaubhp)q¹}qº(hXîIt would be prohibitive to continually compute checksums for all content contained in the system. Therefore, the system should have provision for periodic, random checks that compute the checksum for objects and compare with the original.q»hh­hhhhsh }q¼(h$]h%]h#]h"]h&]uh(Kh]q½h=XîIt would be prohibitive to continually compute checksums for all content contained in the system. Therefore, the system should have provision for periodic, random checks that compute the checksum for objects and compare with the original.q¾…q¿}qÀ(hh»hh¹ubaubhp)qÁ}qÂ(hXThe system should automatically replace content determined to be incorrect, and system content managers should be notified of such events. Alternatively, bad content could be queued for processing, which is semi-automatically processed by the data managers.qÃhh­hhhhsh }qÄ(h$]h%]h#]h"]h&]uh(Kh]qÅh=XThe system should automatically replace content determined to be incorrect, and system content managers should be notified of such events. Alternatively, bad content could be queued for processing, which is semi-automatically processed by the data managers.qÆ…qÇ}qÈ(hhÃhhÁubaubehhˆubeubh[)qÉ}qÊ(hXjActors - Data manager - Data owner - Member Nodes - Coordinating Nodes - Content quality checking service hhThhhh^h }qË(h$]h%]h#]h"]h&]uh(K$h)hh]qÌ(ha)qÍ}qÎ(hXActorsqÏhhÉhhhheh }qÐ(h$]h%]h#]h"]h&]uh(K$h]qÑh=XActorsqÒ…qÓ}qÔ(hhÏhhÍubaubhk)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 Data managerqâh }qã(h$]h%]h#]h"]h&]uhhÚh]qähp)qå}qæ(hhâhhàhhhhsh }qç(h$]h%]h#]h"]h&]uh(K h]qèh=X Data managerqé…qê}që(hhâhhåubaubahU list_itemqìubhß)qí}qî(hX Data ownerqïh }qð(h$]h%]h#]h"]h&]uhhÚh]qñhp)qò}qó(hhïhhíhhhhsh }qô(h$]h%]h#]h"]h&]uh(K!h]qõh=X Data ownerqö…q÷}qø(hhïhhòubaubahhìubhß)qù}qú(hX Member Nodesqûh }qü(h$]h%]h#]h"]h&]uhhÚh]qýhp)qþ}qÿ(hhûhhùhhhhsh }r(h$]h%]h#]h"]h&]uh(K"h]rh=X Member Nodesr…r}r(hhûhhþubaubahhìubhß)r}r(hXCoordinating Nodesrh }r(h$]h%]h#]h"]h&]uhhÚh]r hp)r }r (hjhjhhhhsh }r (h$]h%]h#]h"]h&]uh(K#h]r h=XCoordinating Nodesr…r}r(hjhj ubaubahhìubhß)r}r(hX!Content quality checking service h }r(h$]h%]h#]h"]h&]uhhÚh]rhp)r}r(hX Content quality checking servicerhjhhhhsh }r(h$]h%]h#]h"]h&]uh(K$h]rh=X Content quality checking servicer…r}r(hjhjubaubahhìubehU bullet_listrubahhˆubeubh[)r}r(hXÅPreconditions - Content present in DataONE - Checksums for all content computed and preserved - Mechanisms available for spot checks of checksum for any object held at any location in the system hhThhhh^h }r (h$]h%]h#]h"]h&]uh(K*h)hh]r!(ha)r"}r#(hX Preconditionsr$hjhhhheh }r%(h$]h%]h#]h"]h&]uh(K*h]r&h=X Preconditionsr'…r(}r)(hj$hj"ubaubhk)r*}r+(hUh }r,(h$]h%]h#]h"]h&]uhjh]r-hÙ)r.}r/(hUh }r0(hÝX-h"]h#]h$]h%]h&]uhj*h]r1(hß)r2}r3(hXContent present in DataONEr4h }r5(h$]h%]h#]h"]h&]uhj.h]r6hp)r7}r8(hj4hj2hhhhsh }r9(h$]h%]h#]h"]h&]uh(K'h]r:h=XContent present in DataONEr;…r<}r=(hj4hj7ubaubahhìubhß)r>}r?(hX0Checksums for all content computed and preservedr@h }rA(h$]h%]h#]h"]h&]uhj.h]rBhp)rC}rD(hj@hj>hhhhsh }rE(h$]h%]h#]h"]h&]uh(K(h]rFh=X0Checksums for all content computed and preservedrG…rH}rI(hj@hjCubaubahhìubhß)rJ}rK(hXcMechanisms available for spot checks of checksum for any object held at any location in the system h }rL(h$]h%]h#]h"]h&]uhj.h]rMhp)rN}rO(hXbMechanisms available for spot checks of checksum for any object held at any location in the systemrPhjJhhhhsh }rQ(h$]h%]h#]h"]h&]uh(K)h]rRh=XbMechanisms available for spot checks of checksum for any object held at any location in the systemrS…rT}rU(hjPhjNubaubahhìubehjubahhˆubeubh[)rV}rW(hXETriggers - Bad content is discovered by failing checksum comparison. hhThhhh^h }rX(h$]h%]h#]h"]h&]uh(K-h)hh]rY(ha)rZ}r[(hXTriggersr\hjVhhhheh }r](h$]h%]h#]h"]h&]uh(K-h]r^h=XTriggersr_…r`}ra(hj\hjZubaubhk)rb}rc(hUh }rd(h$]h%]h#]h"]h&]uhjVh]rehÙ)rf}rg(hUh }rh(hÝX-h"]h#]h$]h%]h&]uhjbh]rihß)rj}rk(hX:Bad content is discovered by failing checksum comparison. h }rl(h$]h%]h#]h"]h&]uhjfh]rmhp)rn}ro(hX9Bad content is discovered by failing checksum comparison.rphjjhhhhsh }rq(h$]h%]h#]h"]h&]uh(K-h]rrh=X9Bad content is discovered by failing checksum comparison.rs…rt}ru(hjphjnubaubahhìubahjubahhˆubeubh[)rv}rw(hX Post Conditions - Bad content present in the system has been replaced with known correct objects - Data managers are notified - Data owners *may* be notified hhThhhh^h }rx(h$]h%]h#]h"]h&]uh(K3h)hh]ry(ha)rz}r{(hXPost Conditionsr|hjvhhhheh }r}(h$]h%]h#]h"]h&]uh(K3h]r~h=XPost Conditionsr…r€}r(hj|hjzubaubhk)r‚}rƒ(hUh }r„(h$]h%]h#]h"]h&]uhjvh]r…hÙ)r†}r‡(hUh }rˆ(hÝX-h"]h#]h$]h%]h&]uhj‚h]r‰(hß)rŠ}r‹(hXNBad content present in the system has been replaced with known correct objectsh }rŒ(h$]h%]h#]h"]h&]uhj†h]rhp)rŽ}r(hXNBad content present in the system has been replaced with known correct objectsrhjŠhhhhsh }r‘(h$]h%]h#]h"]h&]uh(K0h]r’h=XNBad content present in the system has been replaced with known correct objectsr“…r”}r•(hjhjŽubaubahhìubhß)r–}r—(hXData managers are notifiedr˜h }r™(h$]h%]h#]h"]h&]uhj†h]ršhp)r›}rœ(hj˜hj–hhhhsh }r(h$]h%]h#]h"]h&]uh(K2h]ržh=XData managers are notifiedrŸ…r }r¡(hj˜hj›ubaubahhìubhß)r¢}r£(hXData owners *may* be notified h }r¤(h$]h%]h#]h"]h&]uhj†h]r¥hp)r¦}r§(hXData owners *may* be notifiedr¨hj¢hhhhsh }r©(h$]h%]h#]h"]h&]uh(K3h]rª(h=X Data owners r«…r¬}r­(hX Data owners hj¦ubcdocutils.nodes emphasis r®)r¯}r°(hX*may*h }r±(h$]h%]h#]h"]h&]uhj¦h]r²h=Xmayr³…r´}rµ(hUhj¯ubahUemphasisr¶ubh=X be notifiedr·…r¸}r¹(hX be notifiedhj¦ubeubahhìubehjubahhˆubeubeubcdocutils.nodes comment rº)r»}r¼(hX]@startuml images/25_seq.png participant "CRUD API" as m_crud_a << Member Node A >> participant "Synchronization API" as c_sync << Coordinating Node >> c_sync -> m_crud_a: getChecksum (PID) c_sync <-- m_crud_a: checksum participant "CRUD API" as m_crud_b << Member Node B >> c_sync -> m_crud_b: getChecksum (PID) c_sync <-- m_crud_b: checksum @endumlhh+hhhUcommentr½h }r¾(U xml:spacer¿UpreserverÀh"]h#]h$]h%]h&]uh(K?h)hh]rÁh=X]@startuml images/25_seq.png participant "CRUD API" as m_crud_a << Member Node A >> participant "Synchronization API" as c_sync << Coordinating Node >> c_sync -> m_crud_a: getChecksum (PID) c_sync <-- m_crud_a: checksum participant "CRUD API" as m_crud_b << Member Node B >> c_sync -> m_crud_b: getChecksum (PID) c_sync <-- m_crud_b: checksum @endumlrÂ…rÃ}rÄ(hUhj»ubaubcdocutils.nodes image rÅ)rÆ}rÇ(hX.. image:: images/25_seq.png hh+hhhUimagerÈh }rÉ(UuriX!design/UseCases/images/25_seq.pngrÊh"]h#]h$]h%]U candidatesrË}rÌU*jÊsh&]uh(KAh)hh]ubhp)rÍ}rÎ(hXL*Figure 1.* Interactions for use case 25, System validates metadata and datarÏhh+hhhhsh }rÐ(h$]h%]h#]h"]h&]uh(KBh)hh]rÑ(j®)rÒ}rÓ(hX *Figure 1.*h }rÔ(h$]h%]h#]h"]h&]uhjÍh]rÕh=X Figure 1.rÖ…r×}rØ(hUhjÒubahj¶ubh=XA Interactions for use case 25, System validates metadata and datarÙ…rÚ}rÛ(hXA Interactions for use case 25, System validates metadata and datahjÍubeubh)rÜ}rÝ(hX¡.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/25_uc.txtU referencedrÞKhh+hhhhh }rß(h€hh"]ràhah#]h$]h%]h&]ráhauh(KDh)hh]ubeubehUU transformerrâNU footnote_refsrã}räUrefnamesrå}ræh]rçhzasUsymbol_footnotesrè]réUautofootnote_refsrê]rëUsymbol_footnote_refsrì]ríU citationsrî]rïh)hU current_linerðNUtransform_messagesrñ]rò(cdocutils.nodes system_message ró)rô}rõ(hUh }rö(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOr÷uh]røhp)rù}rú(hUh }rû(h$]h%]h#]h"]h&]uhjôh]rüh=X*Hyperlink target "uc25" is not referenced.rý…rþ}rÿ(hUhjùubahhsubahUsystem_messagerubjó)r}r(hUh }r(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypej÷uh]rhp)r}r(hUh }r(h$]h%]h#]h"]h&]uhjh]rh=X-Hyperlink target "index-0" is not referenced.r …r }r (hUhjubahhsubahjubeUreporterr NUid_startr KU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttps://tools.ietf.org/html/rU tracebackrˆUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryr U language_coder!Uenr"U datestampr#NU report_levelr$KU _destinationr%NU halt_levelr&KU strip_classesr'Nh:NUerror_encoding_error_handlerr(Ubackslashreplacer)Udebugr*NUembed_stylesheetr+‰Uoutput_encoding_error_handlerr,Ustrictr-U sectnum_xformr.KUdump_transformsr/NU docinfo_xformr0KUwarning_streamr1NUpep_file_url_templater2Upep-%04dr3Uexit_status_levelr4KUconfigr5NUstrict_visitorr6NUcloak_email_addressesr7ˆUtrim_footnote_reference_spacer8‰Uenvr9NUdump_pseudo_xmlr:NUexpose_internalsr;NUsectsubtitle_xformr<‰U source_linkr=NUrfc_referencesr>NUoutput_encodingr?Uutf-8r@U source_urlrANUinput_encodingrBU utf-8-sigrCU_disable_configrDNU id_prefixrEUU tab_widthrFKUerror_encodingrGUUTF-8rHU_sourcerIhUgettext_compactrJˆU generatorrKNUdump_internalsrLNU smart_quotesrM‰U pep_base_urlrNU https://www.python.org/dev/peps/rOUsyntax_highlightrPUlongrQUinput_encoding_error_handlerrRj-Uauto_id_prefixrSUidrTUdoctitle_xformrU‰Ustrip_elements_with_classesrVNU _config_filesrW]Ufile_insertion_enabledrXˆU raw_enabledrYKU dump_settingsrZNubUsymbol_footnote_startr[KUidsr\}r](hIhThh+hh+hjÜuUsubstitution_namesr^}r_hh)h }r`(h$]h"]h#]Usourcehh%]h&]uU footnotesra]rbUrefidsrc}rd(h]rehahI]rfhPauub.