BIND 10 #2833: refactor relationship between datasrc::ClientList and ZoneTableSegment
BIND 10 Development
do-not-reply at isc.org
Fri Mar 1 17:47:17 UTC 2013
#2833: refactor relationship between datasrc::ClientList and ZoneTableSegment
-------------------------------------+-------------------------------------
Reporter: jinmei | Owner:
Type: task | Status: new
Priority: medium | Milestone: Next-
Component: Unclassified | Sprint-Proposed
Keywords: | Resolution:
Sensitive: 0 | CVSS Scoring:
Sub-Project: DNS | Defect Severity: N/A
Estimated Difficulty: 0 | Feature Depending on Ticket:
Total Hours: 0 | shared memory data source
| Add Hours to Ticket: 0
| Internal?: 0
-------------------------------------+-------------------------------------
Comment (by jinmei):
Replying to [comment:1 vorner]:
> Looking at this ticket, I wonder, will the memmgr read all zones from
the configuration and prepare them, or will it work on-demand ‒ auth asks
„I'd like a zone example.org loaded from here“ and it would do the load
then?
>
> If the second, the load-all method could be sending of the request.
What I'm currently envisioning is the first one.
If we have this config:
{{{
"IN": [{
"type": "sqlite3",
"params": {"database_file": "/usr/local/var/bind10/zone.sqlite3"},
"cache-zones": ["example.org", "example.com"],
"cache-enable": true,
"cache-segment-type": "mapped",
"cache-segment-params": {
"mapped-file-base": "/usr/local/var/bind10/zone.mapped"
}
}]
}}}
The `ClientList` for the auth server first tries to prepare
`ZoneTableSegment` using a mapped memory segment, but notices it's not
ready yet, so somehow mark the property of the corresponding client as
something like "pending segment map" (see #2835 for properties).
"cache-zones" is meaningless for this client list (although it could
be used for some validation at the time of mapping).
When the auth server completes building the `ClientList`, it gets the
list of client's properties (using the #2835 interface), and sends a
"get segment info" (or something) command to the memmgr for the
clients that have pending segments.
Meanwhile, memmgr starts up with the same config, but it actually
builds the memory image for the "cache-zones" for each client, and
maintains the relationship between clients and mapped files (e.g.
for "sqlite3" client, /usr/local/var/bind10/sqlite3-zone.mapped, etc).
When memmgr receives a "get segment info" command from other module,
it responds to it with the mapping information.
When auth receives its response, it updates the pending client with
the given information. At that point the corresponding "mapped memory
segment" will be ready for use, and the in-memory cache will start
working.
(This is a simplified scenario; we'll also need to consider some
exceptional cases and error handling, but they are omitted here).
--
Ticket URL: <http://bind10.isc.org/ticket/2833#comment:2>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list