BIND 10 #2911: don't fallback from ixfr to axfr due to data source error

BIND 10 Development do-not-reply at isc.org
Wed May 29 11:21:37 UTC 2013


#2911: don't fallback from ixfr to axfr due to data source error
-------------------------------------+-------------------------------------
            Reporter:  jinmei        |                        Owner:
                Type:  defect        |  jinmei
            Priority:  medium        |                       Status:
           Component:  xfrin         |  reviewing
            Keywords:                |                    Milestone:
           Sensitive:  0             |  Sprint-20130611
         Sub-Project:  DNS           |                   Resolution:
Estimated Difficulty:  4             |                 CVSS Scoring:
         Total Hours:  0             |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:
                                     |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
Changes (by vorner):

 * owner:  vorner => jinmei


Comment:

 Hello

 Replying to [comment:16 jinmei]:
 > As a general matter, I agree.  For this particular ticket, one
 > possible issue to discuss is whether we ignore the obsolete use_ixfr
 > item possibly with a warning log message or we reject it.  The current
 > branch takes the latter approach (as I thought we agreed on jabber or
 > ML), but without providing offline config update mechanism it means
 > the user will need to edit the json file by hand.  On the other hand,
 > it's more likely that users won't notice the migration if we simply
 > ignore the deprecated item (and we know users don't read log
 > messages).

 I think rejecting it is fine for now. Most people probably didn't set the
 flag and I doubt there are many real-world instances either.

 I'll bring it up on the mailing list to discuss the plans.

 > I don't have a strong opinion, but this sounds like a reasonable
 > suggestion.

 OK. But, thinking about it again, we probably want it as part of the
 configuration overwrite.

 > I didn't find a tab in xfrin.spec introduced in the branch.  There are
 > some tabs already existing in the file, but for completeness I removed
 > them too.

 Sorry, that one is probably OK. I just copy pasted one more file as I
 didn't notice it was different one already.

 > And I don't understand why this part is cited: is it a tab issue or
 > something else?
 >
 > > {{{#!python
 > >     def test_config_handler_use_ixfr(self):
 > >         # use_ixfr was deprecated and explicitly rejected for now.
 > >         config = { 'zones': [
 > >                    { 'name': 'test.example.',
 > >                     'master_addr': '192.0.2.1',
 > >                     'master_port': 53,
 > >                      'use_ixfr': True
 > >                    }
 > >                  ]}
 > >         self.assertEqual(self.xfr.config_handler(config)['result'][0],
 1)
 > > }}}
 >
 > There's not a tab, but the indentation is certainly incorrect.  I
 > guess it's a simple mistyping.  Fixed.

 It may have not been a tab, tabs just show in the diff as differently
 indented (because of the `+` at the beginning). In such case it was just
 bad indentation.

 However, I don't see any fix for that in the branch and it seems still
 broken in my copy.

 > > I see no threads mentioned in
 `fb3b94fa5eec711ff84ef281370eb2bfa95a0b5a` (except the commit message).
 Did you mean methods?
 >
 > Ah, right.  Should I update the commit using rebase?  (Since the
 > branch is already shared I've not touched the history at the moment).

 Yes, unless it's a lot of work, as it's only a minor detail.

 > > Does the current way of creating zones still have the problem of
 leaving an empty zone upon failed attempt?
 >
 > I don't understand the question...is this about config_handler()
 > replacing `_zones`?

 No. I mean the fact that we create a new zone if there wasn't one before
 in the database. And it's not inside the transaction, so if the transfer
 fails for some reason, the data is not committed, but the new zone is
 still left in the database, empty.

 > Regarding where, maybe you're referring to an intermediate point of
 > the branch?  In the latest version the check is the following part of
 > `_get_zone_soa`:
 > {{{#!python
 >     if soa_rrset.get_rdata_count() != 1:
 >         logger.warn(XFRIN_ZONE_MULTIPLE_SOA,
 >                     format_zone_str(zone_name, zone_class),
 >                     soa_rrset.get_rdata_count())
 >         return None
 > }}}

 Possibly, yes, I did read it by separate commits.

 > As for what we should do in this case may be debatable.  But I don't
 > think it a bad idea to continue the transfer using AXFR in such a case
 > (which is what the current branch should do).

 Hmm. What will happen if the master copy is broken this way? Will it
 reject this on xfr-in, effectively making the transfer fail and retry soon
 (and infinitely so)?

 To be clear, I don't have a proposal what to do. But that situation with
 multiple SOA seems more broken than it looks at the first sigh.

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


More information about the bind10-tickets mailing list