[bind10-dev] zonemgr / notify out questions

Jeremy C. Reed jreed at isc.org
Mon Sep 13 18:10:59 UTC 2010


On Sun, 12 Sep 2010, Jerry wrote:

> > > > 17)  zonemgr expired a zone where the serial was not increased. This
> may
> > > > be same problem as above #15.
> > > > 
> > > > [b10-zonemgr] Zone (foo., IN) is expired.
> > >  
> > >  I can't understand this question, when zone expires, will its serial be
> > > changed?
> 
> > Serial not changed. The question is: why does it output that the zone is 
> > expired?  Why does it think it is expired?
> 
> When zone refresh timer finds a zone's master servers can't be reached for
> "expire" time
> (now - last_refresh_time  >=  expire time), the zone will become expired. 
> But if zonemgr receives notify-in messages for a expired zone, it will still
> try to connect 
> to the zone's master servers and do refresh again.

It seems broken to me.

See trunk/src/bin/zonemgr/zonemgr.py.in _zone_is_expired

Is the test backwards?

         if (ZONE_EXPIRED == self._get_zone_state(zone_name_class) or
            zone_last_refresh_time + zone_expired_time <= self._get_current_time

            return True

If the previous time plus the SOA expire is less than current time, then 
it should return False.

And is that misnamed? "last_refresh" as expired is not based on a single 
last refresh only.

Also for some zones I get repeated "expired" logging  for the same zone 
-- even when no notify is sent to it to restart this counter.

And it does a AXFR-in even if the SOA serial doesn't increase. For 
example, my zone has a SOA refresh of 10. Approximately every ten 
seconds, it will do a new AXFR transfer. This keeps repeating even 
though the master's serial for that zone never changes. This stops doing 
the zone transfers once it reaches the SOA expired (and says zone "is 
expired.") -- but that doesn't match up either since it is around 104 
seconds where my expire is 45 seconds.


19) Is random Refresh jitter defined in any specification? I see it uses 
between (zone_refresh_time - ((1 * zone_refresh_time) / 4)) and 
zone_refresh_time.



More information about the bind10-dev mailing list