|
|
|
@ -203,7 +203,9 @@ class Notifier(object): |
|
|
|
|
|
|
|
|
|
def add_replication_callback(self, cb): |
|
|
|
|
"""Add a callback that will be called when some new data is available. |
|
|
|
|
Callback is not given any arguments. |
|
|
|
|
Callback is not given any arguments. It should *not* return a Deferred - if |
|
|
|
|
it needs to do any asynchronous work, a background thread should be started and |
|
|
|
|
wrapped with run_as_background_process. |
|
|
|
|
""" |
|
|
|
|
self.replication_callbacks.append(cb) |
|
|
|
|
|
|
|
|
@ -515,12 +517,5 @@ class Notifier(object): |
|
|
|
|
|
|
|
|
|
def notify_replication(self): |
|
|
|
|
"""Notify the any replication listeners that there's a new event""" |
|
|
|
|
with PreserveLoggingContext(): |
|
|
|
|
# the callbacks may well outlast the current request, so we run |
|
|
|
|
# them in the sentinel logcontext. |
|
|
|
|
# |
|
|
|
|
# (ideally it would be up to the callbacks to know if they were |
|
|
|
|
# starting off background processes and drop the logcontext |
|
|
|
|
# accordingly, but that requires more changes) |
|
|
|
|
for cb in self.replication_callbacks: |
|
|
|
|
cb() |
|
|
|
|
for cb in self.replication_callbacks: |
|
|
|
|
cb() |
|
|
|
|