Put vector gauges on transaction queue pending PDU and EDU dicts
This commit is contained in:
parent
e9c4b0d178
commit
094803cf82
|
@ -25,12 +25,15 @@ from synapse.util.logcontext import PreserveLoggingContext
|
||||||
from synapse.util.retryutils import (
|
from synapse.util.retryutils import (
|
||||||
get_retry_limiter, NotRetryingDestination,
|
get_retry_limiter, NotRetryingDestination,
|
||||||
)
|
)
|
||||||
|
import synapse.metrics
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
metrics = synapse.metrics.get_metrics_for(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TransactionQueue(object):
|
class TransactionQueue(object):
|
||||||
"""This class makes sure we only have one transaction in flight at
|
"""This class makes sure we only have one transaction in flight at
|
||||||
|
@ -56,9 +59,9 @@ class TransactionQueue(object):
|
||||||
|
|
||||||
# Is a mapping from destination -> list of
|
# Is a mapping from destination -> list of
|
||||||
# tuple(pending pdus, deferred, order)
|
# tuple(pending pdus, deferred, order)
|
||||||
self.pending_pdus_by_dest = {}
|
self.pending_pdus_by_dest = pdus = {}
|
||||||
# destination -> list of tuple(edu, deferred)
|
# destination -> list of tuple(edu, deferred)
|
||||||
self.pending_edus_by_dest = {}
|
self.pending_edus_by_dest = edus = {}
|
||||||
|
|
||||||
# destination -> list of tuple(failure, deferred)
|
# destination -> list of tuple(failure, deferred)
|
||||||
self.pending_failures_by_dest = {}
|
self.pending_failures_by_dest = {}
|
||||||
|
@ -66,6 +69,15 @@ class TransactionQueue(object):
|
||||||
# HACK to get unique tx id
|
# HACK to get unique tx id
|
||||||
self._next_txn_id = int(self._clock.time_msec())
|
self._next_txn_id = int(self._clock.time_msec())
|
||||||
|
|
||||||
|
metrics.register_callback("pending_pdus",
|
||||||
|
lambda: {(dest,): len(pdus[dest]) for dest in pdus.keys()},
|
||||||
|
keys=["dest"],
|
||||||
|
)
|
||||||
|
metrics.register_callback("pending_edus",
|
||||||
|
lambda: {(dest,): len(edus[dest]) for dest in edus.keys()},
|
||||||
|
keys=["dest"],
|
||||||
|
)
|
||||||
|
|
||||||
def can_send_to(self, destination):
|
def can_send_to(self, destination):
|
||||||
"""Can we send messages to the given server?
|
"""Can we send messages to the given server?
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue