BIND 10 #2609: SERVFAIL on all queries while b10-loadzone is running

BIND 10 Development do-not-reply at isc.org
Tue Jan 8 12:00:49 UTC 2013


#2609: SERVFAIL on all queries while b10-loadzone is running
-------------------------------------+-------------------------------------
            Reporter:  vorner        |                        Owner:
                Type:  defect        |                       Status:  new
            Priority:  medium        |                    Milestone:  New
           Component:  Unclassified  |  Tasks
            Keywords:                |                   Resolution:
           Sensitive:  0             |                 CVSS Scoring:
         Sub-Project:  DNS           |              Defect Severity:  N/A
Estimated Difficulty:  0             |  Feature Depending on Ticket:
         Total Hours:  0             |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------

Comment (by vorner):

 Hello

 Replying to [comment:2 jinmei]:
 > Hmm, actually, SQLite3 doesn't even allow read if there's a
 > transaction in which some write operations have been performed:
 > http://www.sqlite.org/faq.html#q5

 That is, indeed, stupid.

 > To solve this situation, I guess we need some tricky operation within
 > sqlite_accessor:
 >
 > - if it's for replacing the entire zone, don't start a transaction,
 >   but assign a new zone ID in the "zones" table (preventing it from
 >   matching actual queries accidentally).

 I think this would not only be much more complicated, but also slower. The
 sqlite3 library would `sync()` after each write and the poor disk could
 jump
 out of the case because of that.

 And, it would lower the chance of collision a bit, but it could probably
 still
 happen, if the write of some piece of data happens at the same time as
 request
 to read.

 Another option could be to use a separate database file for each zone,
 construct the new version into a new file and then rename the file. But
 that
 has obvious drawbacks too.

 > So, a higher level alternative is to declare that the SQLite3 data
 > source shouldn't be used for a huge zone.  In that case, we should add
 > support for another data source (using a database that has more
 > fine-grained locking) very soon, though.

 That sounds like less work and more useful than the workaround.

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


More information about the bind10-tickets mailing list