BIND 10 #626: unexpected response from bind10 (SERVFAIL from auth server) (hotcache issue)

BIND 10 Development do-not-reply at isc.org
Fri Mar 11 20:07:38 UTC 2011


#626: unexpected response from bind10 (SERVFAIL from auth server) (hotcache
issue)
-------------------------------------+-------------------------------------
                 Reporter:  shane    |                Owner:  jinmei
                     Type:  defect   |               Status:  reviewing
                 Priority:           |            Milestone:  A-Team-
  critical                           |  Sprint-20110316
                Component:           |           Resolution:
  b10-auth                           |            Sensitive:  0
                 Keywords:           |  Add Hours to Ticket:  0
Estimated Number of Hours:  5.0      |          Total Hours:  0
                Billable?:  1        |
                Internal?:  0        |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 Replying to [comment:12 vorner]:
 > Hello
 >
 > I confirm the test throws an exception before the fix and works
 afterwards (which would be cause for the SERVFAIL problem). Also, the code
 seem to be clean.
 >
 > But I have a problem understanding what exactly was the problem and how
 this can possibly fix it. How is referral related to cached SOA? What did
 I overlook? Could you explain it little bit, please?

 The problem is this: when SOA is explicitly queried the data source API
 returns "REFERRAL" flag (which means the owner name has an NS, which
 is always the case for the owner name (=zone apex) of SOA as long as
 the zone is validly configured).  In this case hasDelegation() checks
 if the NS is really a delegation, excluding the zone apex, so it's not
 confused.

 On the other hand, in order to find SOA for a negative response,
 addSOA() performs "simple query", and rejects any result if it has a
 flag (including "REFERRAL").  The "simple query" implementation of
 sqlite3 data source (and test data source that largely emulates the
 sqlite3 behavior) cancels the REFERRAL flag internally, so it normally
 won't confuse addSOA() either.

 However, when SOA is first explicitly queried and hot spot cache is
 enabled, the result is cached with the "REFERRAL" flag.  And, in the
 original code cache.retrieve() returns the cached RRset intact, with
 the "REFERRAL" flag being on even for the "simple query" mode, which
 confused addSOA(), having it discard the result.

 My patch adds a post processing after cache.retrieve() so that it
 provides the same behavior as the non cache case.

 > Btw, I fixed a compilation problem here, and pushed (one line in
 makefile).

 Ah, okay, thanks.  Hmm, we may not want to rely on libasiolink, but
 that would be a separate issue.

 > And, as this was originaly reported by someone external to the
 > project, should we wait for his confirmation as well?

 Holding merge until we get confirmation?  In this case since we can
 reproduce the problem and should be quite confident about the cause
 and fix, I don't think we have to wait.  But we should notify the
 original reporter about the fix when we merge the fix to master.

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


More information about the bind10-tickets mailing list