BIND 10 #1372: IXFR-out protocol handling: AXFR style IXFR
BIND 10 Development
do-not-reply at isc.org
Sun Nov 20 02:08:16 UTC 2011
#1372: IXFR-out protocol handling: AXFR style IXFR
-------------------------------------+-------------------------------------
Reporter: | Owner: jinmei
jinmei | Status: reviewing
Type: task | Milestone:
Priority: major | Sprint-20111122
Component: | Resolution:
xfrout | Sensitive: 0
Keywords: | Sub-Project: DNS
Defect Severity: N/A | Estimated Difficulty: 4
Feature Depending on Ticket: | Total Hours: 0
Add Hours to Ticket: 0 |
Internal?: 0 |
-------------------------------------+-------------------------------------
Comment (by jinmei):
Replying to [comment:7 vorner]:
Thanks for the prompt review!
> I have few notes about it:
> * The `find_zone` in tests, the docstring is wrong. I don't see it
returning PARTIALMATCH anywhere.
Ah, that's a result of naive copy-paste (and adjust). Fixed.
> * In the `find` method in tests, what is the different between the
first if case and the else case?
Another good catch. It resulted in awkward code as a result of
incremental development. I believe the latest version makes more
sense.
> * About the tests generally, I noticed quite some code from them was
removed. Is it OK to do? Did the functionality tested disappear or did the
tests move somewhere else?
Hmm, as far as I can see few (or even no) tests were removed in the
*body* of this branch. Maybe you are referring to changes in the
first commit (315f499) that merges #1370? (1370 itself wasn't a
dependency for this task but I merge it to minimize the diff at the
merge time). Since we stopped skipping intermediate TSIGs, some
corresponding tests were removed in #1370. (See also the next
bullet)
> * Is it right the sign-every-nth message is gone and everything is
signed now? I'd guess so by reading the changes, is that true? If so, what
was the reason? Is it OK to do in this branch?
See #1370 (and changelog in master for this). I should have noted
this in the pre-review comment, but forgot to mention that, which may
have confused you. If so, sorry about that.
In any case, it's a result of merge (which is now in master), and not
directly related to this branch.
> * This thing:
> {{{#!python
> # Make sure the question is valid. This should be ensured by
> # the auth server, but since it's far from xfrout itself, we check
> # it by ourselves. A viloation would be an internal bug, so we
> # raise and stop here rather than returning a FORMERR or SERVFAIL.
> }}}
> Will anything at all be returned to the client, or will we just drop
the connection in such case? I believe even an internal bug requires a
SERVFAIL, doesn't it?
Actually, I thought in this case there is even *no client* as long as
the auth server does the right thing, so this bug should be a more
serious thing. That's why I thought it would make more sense to do
nothing for this case (and the case of unexpected request type). In
general, I agree an internal error would result in SERVFAIL.
But in this specific case I'm also okay with following the general
practice if you prefer it.
> * You call the xfrout a „daemon“ in the log message descriptions. I
believe this might be misleading a little bit, for bind10 itself can run
in foreground and xfrout is only part of the system anyway.
Hmm, actually I just followed the seeming convention adopted in this
message file. I'm okay with changing daemon to e.g., server, but if
we do so the change should apply throughout the message file.
> * Is it OK to convert a general std::exception (like std::bad_alloc) to
isc.datasrc.Error? Shouldn't it be a generic Exception, then?
Hmm, maybe you're right. I adopted the convention used in
DataSourceClient_getUpdater(), but a generic Exception seems to make
more sense in these cases. I've updated getJournalReader. Maybe
we should do the same for getUpdater(), but for now I've not touched it.
> * Should it really throw in case of no diffs table? Shouldn't it say
NotImplemented or pretend there are no diffs? Who creates the table
anyway? If it's xfrin, it might mean that no diffs were stored yet just.
What will happen in this case anyway? Will it fallback to AXFR-like?
As we discussed at bind10-dev separately, I personally hesitate to add
more code for compatibility hack (like throwing NotImplemented due to
schema mismatch) in this early stage. In this particular case (adding
a "diffs" table), my suggestion was to add an update script and have
the user apply it. And, for xfrout, I'd rather handle it like other
data source level failure, i.e., returning SERVFAIL (it's (as a
general case with exception) tested in
test_dns_xfrout_start_datasrc_servfail).
--
Ticket URL: <http://bind10.isc.org/ticket/1372#comment:8>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list