Remove broken use of clock.call_later
background_updates was using `call_later` in a way that leaked the logcontext into the reactor. We could have rewritten it to do it properly, but given that we weren't using the fancier facilities provided by `call_later`, we might as well just use `async.sleep`, which does the logcontext stuff properly.
This commit is contained in:
parent
2abe85d50e
commit
994d7ae7c5
|
@ -12,6 +12,7 @@
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
import synapse.util.async
|
||||||
|
|
||||||
from ._base import SQLBaseStore
|
from ._base import SQLBaseStore
|
||||||
from . import engines
|
from . import engines
|
||||||
|
@ -84,24 +85,14 @@ class BackgroundUpdateStore(SQLBaseStore):
|
||||||
self._background_update_performance = {}
|
self._background_update_performance = {}
|
||||||
self._background_update_queue = []
|
self._background_update_queue = []
|
||||||
self._background_update_handlers = {}
|
self._background_update_handlers = {}
|
||||||
self._background_update_timer = None
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def start_doing_background_updates(self):
|
def start_doing_background_updates(self):
|
||||||
assert self._background_update_timer is None, \
|
|
||||||
"background updates already running"
|
|
||||||
|
|
||||||
logger.info("Starting background schema updates")
|
logger.info("Starting background schema updates")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
sleep = defer.Deferred()
|
yield synapse.util.async.sleep(
|
||||||
self._background_update_timer = self._clock.call_later(
|
self.BACKGROUND_UPDATE_INTERVAL_MS / 1000.)
|
||||||
self.BACKGROUND_UPDATE_INTERVAL_MS / 1000., sleep.callback, None
|
|
||||||
)
|
|
||||||
try:
|
|
||||||
yield sleep
|
|
||||||
finally:
|
|
||||||
self._background_update_timer = None
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = yield self.do_next_background_update(
|
result = yield self.do_next_background_update(
|
||||||
|
|
Loading…
Reference in New Issue