Opened 7 years ago

Closed 6 years ago

#2989 closed defect (wontfix)

Python notify_out module should use general datasource configuration, not Auth/database_file

Reported by: jinmei Owned by: UnAssigned
Priority: medium Milestone: DNS Outstanding Tasks
Component: xfrout Version:
Keywords: Cc:
CVSS Scoring: Parent Tickets:
Sensitive: no Defect Severity: N/A
Sub-Project: DNS Feature Depending on Ticket:
Estimated Difficulty: 4 Add Hours to Ticket: 0
Total Hours: 0 Internal?: no

Description (last modified by jinmei)

This is a subtask of #2965.

We'll update the isc.notify.notify_out module to get rid of the
reference to the Auth/database_file config, etc.

More specifics based on #2964:

  • import 'data_sources' module instead of 'Auth' as a remote module. See Xfrin constructor.
  • maintain isc.server_common.DataSrcClientsMgr object and call its reconfigure() from the remote config update callback for the data_sources module. See Xfrin._datasrc_config_handler.
  • when a data source is necessary, get it from the DataSrcClientsMgr using its get_client_list(). See xfrin_start().
  • then remove any reference to auth module, "db_file", sqlite3 specifics, etc.

A tricky point of notify_out is that it's also run on a different
thread, and uses ZoneFinder in various places. We could share it
with the main xfrout threads with careful synchronization, but that
will make the already messy implementation (wrt the naive use of
threads) even messier.

So my suggestion is to create and use a separate DataSrcClientsMgr
in the notify_out module. In the main xfrout module, when a config
update for the data_sources module is delivered, it will reconfigure
the main and notify's DataSrcClientsMgr. It's a bit redundant, but
resource-wise it shouldn't be that heavy in practice as we'll simply
maintain two separate SQLite3 connections (so the cost is independent
from the size or number of zones, for example).

When we re-design and implement xfr's we can handle it in a cleaner way.

On completion of this task, we can fully get rid of the old stuff from
xfrout. We should also be able to remove Auth/database_file from
lettuce tests on xfrout.


Change History (11)

comment:1 Changed 7 years ago by jinmei

  • Description modified (diff)

comment:2 Changed 7 years ago by muks

  • Estimated Difficulty changed from 0 to 4

comment:3 Changed 7 years ago by muks

  • Milestone changed from Previous-Sprint-Proposed to Sprint-20130625

Moving to current sprint as we are blocked on other tickets.

comment:4 Changed 7 years ago by pselkirk

  • Owner set to pselkirk
  • Status changed from new to accepted

comment:5 Changed 7 years ago by pselkirk

  • Owner changed from pselkirk to UnAssigned
  • Status changed from accepted to assigned

comment:6 Changed 7 years ago by vorner

  • Owner changed from UnAssigned to vorner
  • Status changed from assigned to accepted

comment:7 Changed 7 years ago by vorner

  • Owner changed from vorner to UnAssigned
  • Status changed from accepted to reviewing


It is ready for review. Some things worth a note:

  • The old version of the Notify module populated a dictionary of zone names in memory in startup. This is harder to do with using the client lists. But is is also wrong, as the list will get outdated. Currently, I start with an empty list and load the things on-demand. But I don't clean them up once they are no longer used, as it is not needed for this task. OK to leave for a clean-up ticket?
  • I did not follow the ticket description to letter. To do so, I'd need to create another connection to the CC, which seems like too much work and too ugly. Instead, I provide a method that can be called from other thread that'll push a new configuration into the notify object.
  • The xfrout still uses the old way and old configuration. For now, I create the notify with constructed configuration for the set database file. Updates are not propagated. I expect #2965 will do that, it'd be just calling the correct method when the update comes, but it needs non-trivial changes to the code (the changes that look like they belong to #2965).

No changelog, since there should be no user-visible change for now.

comment:8 Changed 6 years ago by kean

  • Owner changed from UnAssigned to kean

comment:9 Changed 6 years ago by kean

  • Owner changed from kean to UnAssigned

comment:10 Changed 6 years ago by stephen

  • Milestone changed from bind10-1.2-release-freeze to DNS Outstanding Tasks

comment:11 Changed 6 years ago by tomek

  • Resolution set to wontfix
  • Status changed from reviewing to closed

DNS and BIND10 framework is outside of scope for Kea project.
The corresponding code has been removed from Kea git repository.
If you want to follow up on DNS or former BIND10 issues, see project.

Closing ticket.

Note: See TracTickets for help on using tickets.