On 09/21/2011 12:58 PM, Daniel Shahaf wrote: > C. Michael Pilato wrote on Wed, Sep 21, 2011 at 12:13:17 -0400: >> On 09/21/2011 11:50 AM, C. Michael Pilato wrote: >>> Well, BDB being a real database, we can do this sort of backfill operation >>> without attending to any higher-level Subversion concepts such as revisions >>> at all. A cursor walk through the `nodes' table should suffice: >>> >>> for key, value in nodes_table.rows() >>> successor_id = key >>> node_rev = parse_node_revision_skel(value) >>> successors_table.add_row(node_rev.predecessor_id, successor_id) >> >> I should point out, though, that this approach is definitely *not* to be >> used on a live repository. >> > > ... because new entries might be inserted to NODES by concurrent > writers, and preventing that requires an exclusive lock that would > block concurrent readers and writers for too long?
Precisely. We need a sort of check-off list of which nodes-rev have been processed, right? That list is as simple as "all previous rows" when using a cursor in an offline repository, but isn't so clean otherwise. -- C. Michael Pilato <cmpil...@collab.net> CollabNet <> www.collab.net <> Distributed Development On Demand
signature.asc
Description: OpenPGP digital signature