BIND 10 #1212: Implement IXFR-in

BIND 10 Development do-not-reply at isc.org
Wed Sep 28 19:43:05 UTC 2011


#1212: Implement IXFR-in
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:
  stephen                            |                Status:  new
                       Type:  task   |             Milestone:
                   Priority:         |  Sprint-20111011
  blocker                            |            Resolution:
                  Component:  xfrin  |             Sensitive:  0
                   Keywords:         |           Sub-Project:  DNS
            Defect Severity:  N/A    |  Estimated Difficulty:  12
Feature Depending on Ticket:         |           Total Hours:  0
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 Replying to [comment:7 jelte]:

 > In general this looks like a reasonable breakdown.
 >
 > I do wonder about the commit-per-100-'diffs' though, but maybe i
 misunderstand that specific part of your description.

 It's not *commit*-per-100, but *apply*-per-100.  What *apply* does is
 to start a new transaction (if not yet started) and apply the diffs
 under the transaction (in the database case by issuing SQL statements,
 for example), but it doesn't perform "commit" yet.

 So, *apply*-per-100 means we delay starting a transaction until we
 have 100 diffs (or have full diffs for a single SOA-SOA difference if
 they are smaller than 100).  This also means if the entire diff
 contain multiple RRs of the same RRset we may be able to benefit from
 combining them before actually applying the diff to the underlying
 data source (this part wouldn't be a big deal for DB-based data
 source, though, because we apply the diff per RR anyway, and so the
 total number of necessary SQL statements won't be different).

 This behavior is simply derived from the BIND 9 implementation (and I
 don't know the rationale of the magic number of 100).  If we don't
 like it or we think it's a premature optimization, we could skip that
 in our initial implementation.

 > One per soa->soa I can understand (as this reflects one complete
 change), but doing intermediate commits may leave the zone in an
 inconsistent state even without a second writer (if there is a failure
 after it). OTOH if we don't have onle one big transaction it may protect
 us from those, but one might run into global database transaction
 timeouts...

 Exactly, this tradeoff is what I was not sure either.  For our initial
 experimental implementation (which would be more for a proof of
 concept than for production use), either approach should be okay.

-- 
Ticket URL: <http://bind10.isc.org/ticket/1212#comment:8>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list