mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-26 19:47:05 +03:00
Fix a number of "Starting txn from sentinel context" warnings (#5605)
Fixes #5602, #5603
This commit is contained in:
parent
c7b48bd42d
commit
91753cae59
5 changed files with 35 additions and 6 deletions
1
changelog.d/5605.bugfix
Normal file
1
changelog.d/5605.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a number of "Starting txn from sentinel context" warnings.
|
|
@ -22,6 +22,7 @@ from email.mime.text import MIMEText
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.errors import StoreError
|
from synapse.api.errors import StoreError
|
||||||
|
from synapse.metrics.background_process_metrics import run_as_background_process
|
||||||
from synapse.types import UserID
|
from synapse.types import UserID
|
||||||
from synapse.util import stringutils
|
from synapse.util import stringutils
|
||||||
from synapse.util.logcontext import make_deferred_yieldable
|
from synapse.util.logcontext import make_deferred_yieldable
|
||||||
|
@ -67,7 +68,14 @@ class AccountValidityHandler(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check the renewal emails to send and send them every 30min.
|
# Check the renewal emails to send and send them every 30min.
|
||||||
self.clock.looping_call(self.send_renewal_emails, 30 * 60 * 1000)
|
def send_emails():
|
||||||
|
# run as a background process to make sure that the database transactions
|
||||||
|
# have a logcontext to report to
|
||||||
|
return run_as_background_process(
|
||||||
|
"send_renewals", self.send_renewal_emails
|
||||||
|
)
|
||||||
|
|
||||||
|
self.clock.looping_call(send_emails, 30 * 60 * 1000)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def send_renewal_emails(self):
|
def send_renewal_emails(self):
|
||||||
|
|
|
@ -253,7 +253,14 @@ class EventsStore(
|
||||||
)
|
)
|
||||||
|
|
||||||
# Read the extrems every 60 minutes
|
# Read the extrems every 60 minutes
|
||||||
hs.get_clock().looping_call(self._read_forward_extremities, 60 * 60 * 1000)
|
def read_forward_extremities():
|
||||||
|
# run as a background process to make sure that the database transactions
|
||||||
|
# have a logcontext to report to
|
||||||
|
return run_as_background_process(
|
||||||
|
"read_forward_extremities", self._read_forward_extremities
|
||||||
|
)
|
||||||
|
|
||||||
|
hs.get_clock().looping_call(read_forward_extremities, 60 * 60 * 1000)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _read_forward_extremities(self):
|
def _read_forward_extremities(self):
|
||||||
|
|
|
@ -25,6 +25,7 @@ from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.constants import UserTypes
|
from synapse.api.constants import UserTypes
|
||||||
from synapse.api.errors import Codes, StoreError, ThreepidValidationError
|
from synapse.api.errors import Codes, StoreError, ThreepidValidationError
|
||||||
|
from synapse.metrics.background_process_metrics import run_as_background_process
|
||||||
from synapse.storage import background_updates
|
from synapse.storage import background_updates
|
||||||
from synapse.storage._base import SQLBaseStore
|
from synapse.storage._base import SQLBaseStore
|
||||||
from synapse.types import UserID
|
from synapse.types import UserID
|
||||||
|
@ -619,9 +620,15 @@ class RegistrationStore(
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create a background job for culling expired 3PID validity tokens
|
# Create a background job for culling expired 3PID validity tokens
|
||||||
hs.get_clock().looping_call(
|
def start_cull():
|
||||||
self.cull_expired_threepid_validation_tokens, THIRTY_MINUTES_IN_MS
|
# run as a background process to make sure that the database transactions
|
||||||
)
|
# have a logcontext to report to
|
||||||
|
return run_as_background_process(
|
||||||
|
"cull_expired_threepid_validation_tokens",
|
||||||
|
self.cull_expired_threepid_validation_tokens,
|
||||||
|
)
|
||||||
|
|
||||||
|
hs.get_clock().looping_call(start_cull, THIRTY_MINUTES_IN_MS)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _backgroud_update_set_deactivated_flag(self, progress, batch_size):
|
def _backgroud_update_set_deactivated_flag(self, progress, batch_size):
|
||||||
|
|
|
@ -62,7 +62,10 @@ class Clock(object):
|
||||||
def looping_call(self, f, msec):
|
def looping_call(self, f, msec):
|
||||||
"""Call a function repeatedly.
|
"""Call a function repeatedly.
|
||||||
|
|
||||||
Waits `msec` initially before calling `f` for the first time.
|
Waits `msec` initially before calling `f` for the first time.
|
||||||
|
|
||||||
|
Note that the function will be called with no logcontext, so if it is anything
|
||||||
|
other than trivial, you probably want to wrap it in run_as_background_process.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
f(function): The function to call repeatedly.
|
f(function): The function to call repeatedly.
|
||||||
|
@ -77,6 +80,9 @@ class Clock(object):
|
||||||
def call_later(self, delay, callback, *args, **kwargs):
|
def call_later(self, delay, callback, *args, **kwargs):
|
||||||
"""Call something later
|
"""Call something later
|
||||||
|
|
||||||
|
Note that the function will be called with no logcontext, so if it is anything
|
||||||
|
other than trivial, you probably want to wrap it in run_as_background_process.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
delay(float): How long to wait in seconds.
|
delay(float): How long to wait in seconds.
|
||||||
callback(function): Function to call
|
callback(function): Function to call
|
||||||
|
|
Loading…
Reference in a new issue