BIND 10 #2934: xfrout session can be broken due to EAGAIN
BIND 10 Development
do-not-reply at isc.org
Fri May 17 08:26:48 UTC 2013
#2934: xfrout session can be broken due to EAGAIN
-------------------------------------+-------------------------------------
Reporter: jinmei | Owner:
Type: defect | jinmei
Priority: medium | Status:
Component: xfrout | reviewing
Keywords: | Milestone:
Sensitive: 0 | Sprint-20130528
Sub-Project: DNS | Resolution:
Estimated Difficulty: 2 | 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
The lettuce tests don't pass for me, for some kind of permission error:
{{{
Load 100 records for zone example.org to DB file data/xfrout.sqlite3
# features/terrain/load Load 100 records for zone example.org to DB
file data/xfrout.sqlite3 #
features/terrain/loadzone.py:58
Traceback (most recent call last):
File "/home/vorner/.local/lib64/python2.7/site-
packages/lettuce/core.py", line 117, in __call__
ret = self.function(self.step, *args, **kw)
File
"/var/tmp/bind10/bind10-3/tests/lettuce/features/terrain/loadzone.py",
line 86, in load_zone_rr_to_dbfile
run_loadzone(zone, f.name, db_file)
File
"/var/tmp/bind10/bind10-3/tests/lettuce/features/terrain/loadzone.py",
line 35, in run_loadzone
subprocess.PIPE, subprocess.PIPE)
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1308, in
_execute_child
raise child_exception
OSError: [Errno 13] Permission denied
Given I have bind10 running with configuration xfrout_master.conf
# features/terrain/bind Given I have bind10 running with configuration
xfrout_master.conf #
features/terrain/bind10_control.py:107
And wait for bind10 stderr message BIND10_STARTED_CC
# features/terrain/step And wait for bind10 stderr message
BIND10_STARTED_CC #
features/terrain/steps.py:34
And wait for bind10 stderr message CMDCTL_STARTED
# features/terrain/step And wait for bind10 stderr message
CMDCTL_STARTED #
features/terrain/steps.py:34
And wait for bind10 stderr message AUTH_SERVER_STARTED
# features/terrain/step And wait for bind10 stderr message
AUTH_SERVER_STARTED #
features/terrain/steps.py:34
And wait for bind10 stderr message XFROUT_STARTED
# features/terrain/step And wait for bind10 stderr message
XFROUT_STARTED #
features/terrain/steps.py:34
And wait for bind10 stderr message ZONEMGR_STARTED
# features/terrain/step And wait for bind10 stderr message
ZONEMGR_STARTED #
features/terrain/steps.py:34
When I do a customized AXFR transfer of example.org
# features/terrain/tran When I do a customized AXFR transfer of
example.org #
features/terrain/transfer.py:88
Then transfer result should have 101 rrs
# features/terrain/tran Then transfer result should have 101 rrs
# features/terrain/transfer.py:164
Scenario: transfer a large zone
# features/xfrout_bind10.feature:22
Load 50000 records for zone example.org to DB file data/xfrout.sqlite3
# features/terrain/load Load 50000 records for zone example.org to DB
file data/xfrout.sqlite3 #
features/terrain/loadzone.py:58
Traceback (most recent call last):
File "/home/vorner/.local/lib64/python2.7/site-
packages/lettuce/core.py", line 117, in __call__
ret = self.function(self.step, *args, **kw)
File
"/var/tmp/bind10/bind10-3/tests/lettuce/features/terrain/loadzone.py",
line 86, in load_zone_rr_to_dbfile
run_loadzone(zone, f.name, db_file)
File
"/var/tmp/bind10/bind10-3/tests/lettuce/features/terrain/loadzone.py",
line 35, in run_loadzone
subprocess.PIPE, subprocess.PIPE)
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1308, in
_execute_child
raise child_exception
OSError: [Errno 13] Permission denied
Given I have bind10 running with configuration xfrout_master.conf
}}}
Also, the 5 seconds of timeout seems like a really long time to me. I
guess some kind of wait is needed here, but single second would be more
than enough to fill whatever buffers the OS has (or flush the whole zone
into the buffers if they are large enough).
{{{
When I do a customized AXFR transfer of example.org from [::1]:47806 with
pose of 5 seconds
}}}
Does anything still use the `database_file` option? Didn't we change the
xfrin/out to use the client lists?
{{{
"Auth": {
"database_file": "data/xfrout.sqlite3",
"listen_on": [ {
"address": "::1",
"port": 47806
} ]
},
}}}
Then there are two things in comments.
This should be „with“, not „without“:
{{{#!python
# examine how it's called, so we replace it without our mock.
}}}
I believe this is not a file, but socket. Files are always blocking, at
least in linux (I don't know about other unices).
{{{#!python
"""A helper function to change blocking mode of the given file.
It sets the mode of blocking I/O for the file associated with filenum,
according to parameter 'on': if it's True the file will be made
blocking;
otherwise it will be made non-blocking.
filenum(int): file number (descriptor) of the file to update.
on(bool): whether enable (True) or disable (False) blocking I/O.
"""
}}}
--
Ticket URL: <http://bind10.isc.org/ticket/2934#comment:10>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list