I have some curiosity about how others handle transactions and rollbacks 
when ingesting/updating objects and datastreams, using the RESTful API.

Here are the scenarios we encounter:

1.  We create an object, then try to ingest a critical datastream (say, 
RELS-EXT, or DC).  The datastream ingest fails.  Do you then destroy the 
object?  Do you mark it inactive?  Some other flag to indicate it is in 
an inconsistent state?  Or do you sweep your repo periodically, looking 
for objects in an inconsistent state?

Do you handle non-critical datastream failures differently (say, an 
optional datastream?)

2.  We create a parent object, then a series of child objects.  One of 
the child objects fails to be created (perhaps because of a datastream 
ingest failure, as described above).  Do you then destroy the entire 
tree of objects, as the whole hierarchy is now in an inconsistent state? 
  Or do you somehow indicate in the parent object that its descendants 
are incomplete?  Or, as above, do you regularly sweep the repo, and 
verify all the relations between objects, report dangling pointers?

I'd be very interested to hear about practices that others have 
implemented in production that have worked well for them.

thanks in advance,

-- Scott
-- 
Scott Prater
Shared Development Group
General Library System
University of Wisconsin - Madison
[email protected]
5-5415

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to