BIND 10 #2833: refactor relationship between datasrc::ClientList and ZoneTableSegment
BIND 10 Development
do-not-reply at isc.org
Fri Mar 1 08:35:44 UTC 2013
#2833: refactor relationship between datasrc::ClientList and ZoneTableSegment
-------------------------------------+-------------------------------------
Reporter: | Owner:
jinmei | Status: new
Type: task | Milestone: Next-Sprint-
Priority: | Proposed
medium | Keywords:
Component: | Sensitive: 0
Unclassified | Sub-Project: DNS
CVSS Scoring: | Estimated Difficulty: 0
Defect Severity: N/A | Total Hours: 0
Feature Depending on Ticket: |
shared memory data source |
Add Hours to Ticket: 0 |
Internal?: 0 |
-------------------------------------+-------------------------------------
subtask of #2830. depend on #2832.
not directly related, but IMO will be a helpful cleanup for later
development.
The basic motivation is to make `ClientList` (and `InMemoryClient`)
segment-type agnostic as much as possible.
Feature wise what we'll do is
- create separate zone table segment for each client
- pass specific config (maybe reorganize it) to
`ZoneTableSegment::create`. specifically, we pass
cache-segment-type, cache-segment-params, and cache-zones.
in case of `MasterFiles`, cache-zones should be created from
its own param. also pass "load param", which is, in case of
`MasterFiles`, its own param (zone name to file map)
- also pass a `GetLoadAction` functor to create (we need to extend
it). which would look like:
{{{
typedef boost::function<LoadAction(const Name& zone_name, ConstElementPtr
param)> GetLoadAction;
}}}
For `MasterFiles`, param will be ignored, and something similar to
`loadZoneDataFromFile` will be used. For others, the returned
functor would encapsulate the underlying data source client so it
can create an iterator on actual load.
- if necessary (e.g. in case of local) the actual zone table segment
implementation iterates over the cache-zones, and call the given
GetLoadAction with the name and "load param" part of the config.
- extend the zone table segment class adding the "loadAll" method
(virtual). the behavior differs depending on the characteristics of
the segment. if necessary (e.g. in case of local) the actual zone
table segment implementation iterates over the cache-zones, and call
the given GetLoadAction with the name and "load param" part of the
config. It then uses the `ZoneWriter` with the returned `LoadAction` to
actually load the data into the segment. But in the case of "read
only" shared memory/mapped segment, it will do nothing at this
point. the "load" will be a mapping operation that will happen
later (information given by the memmgr).
Also, cache-zones list and load params may be kept inside the table
segment in case of reload.
The main point of these changes is to move the decision of whether to
actually load from `ClientList` to the segment manager. It will also
allow (later) to remove file lists from `MemoryClient`.
--
Ticket URL: <http://bind10.isc.org/ticket/2833>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list