forked from MirrorHub/synapse
Merge pull request #5984 from matrix-org/joriks/opentracing_link_send_to_edu_contexts
Link the send loop with the edus contexts
This commit is contained in:
commit
1a6ae33309
5 changed files with 16 additions and 8 deletions
1
changelog.d/5984.bugfix
Normal file
1
changelog.d/5984.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix sending of EDUs when opentracing is enabled with an empty whitelist.
|
|
@ -26,6 +26,7 @@ from synapse.logging.opentracing import (
|
||||||
set_tag,
|
set_tag,
|
||||||
start_active_span_follows_from,
|
start_active_span_follows_from,
|
||||||
tags,
|
tags,
|
||||||
|
whitelisted_homeserver,
|
||||||
)
|
)
|
||||||
from synapse.util.metrics import measure_func
|
from synapse.util.metrics import measure_func
|
||||||
|
|
||||||
|
@ -59,9 +60,15 @@ class TransactionManager(object):
|
||||||
# The span_contexts is a generator so that it won't be evaluated if
|
# The span_contexts is a generator so that it won't be evaluated if
|
||||||
# opentracing is disabled. (Yay speed!)
|
# opentracing is disabled. (Yay speed!)
|
||||||
|
|
||||||
span_contexts = (
|
span_contexts = []
|
||||||
extract_text_map(json.loads(edu.get_context())) for edu in pending_edus
|
keep_destination = whitelisted_homeserver(destination)
|
||||||
)
|
|
||||||
|
for edu in pending_edus:
|
||||||
|
context = edu.get_context()
|
||||||
|
if context:
|
||||||
|
span_contexts.append(extract_text_map(json.loads(context)))
|
||||||
|
if keep_destination:
|
||||||
|
edu.strip_context()
|
||||||
|
|
||||||
with start_active_span_follows_from("send_transaction", span_contexts):
|
with start_active_span_follows_from("send_transaction", span_contexts):
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,9 @@ class Edu(JsonEncodedObject):
|
||||||
def get_context(self):
|
def get_context(self):
|
||||||
return getattr(self, "content", {}).get("org.matrix.opentracing_context", "{}")
|
return getattr(self, "content", {}).get("org.matrix.opentracing_context", "{}")
|
||||||
|
|
||||||
|
def strip_context(self):
|
||||||
|
getattr(self, "content", {})["org.matrix.opentracing_context"] = "{}"
|
||||||
|
|
||||||
|
|
||||||
class Transaction(JsonEncodedObject):
|
class Transaction(JsonEncodedObject):
|
||||||
""" A transaction is a list of Pdus and Edus to be sent to a remote home
|
""" A transaction is a list of Pdus and Edus to be sent to a remote home
|
||||||
|
|
|
@ -25,7 +25,6 @@ from synapse.logging.opentracing import (
|
||||||
log_kv,
|
log_kv,
|
||||||
set_tag,
|
set_tag,
|
||||||
start_active_span,
|
start_active_span,
|
||||||
whitelisted_homeserver,
|
|
||||||
)
|
)
|
||||||
from synapse.types import UserID, get_domain_from_id
|
from synapse.types import UserID, get_domain_from_id
|
||||||
from synapse.util.stringutils import random_string
|
from synapse.util.stringutils import random_string
|
||||||
|
@ -121,9 +120,7 @@ class DeviceMessageHandler(object):
|
||||||
"sender": sender_user_id,
|
"sender": sender_user_id,
|
||||||
"type": message_type,
|
"type": message_type,
|
||||||
"message_id": message_id,
|
"message_id": message_id,
|
||||||
"org.matrix.opentracing_context": json.dumps(context)
|
"org.matrix.opentracing_context": json.dumps(context),
|
||||||
if whitelisted_homeserver(destination)
|
|
||||||
else None,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log_kv({"local_messages": local_messages})
|
log_kv({"local_messages": local_messages})
|
||||||
|
|
|
@ -856,7 +856,7 @@ class DeviceStore(DeviceWorkerStore, BackgroundUpdateStore):
|
||||||
"ts": now,
|
"ts": now,
|
||||||
"opentracing_context": json.dumps(context)
|
"opentracing_context": json.dumps(context)
|
||||||
if whitelisted_homeserver(destination)
|
if whitelisted_homeserver(destination)
|
||||||
else None,
|
else "{}",
|
||||||
}
|
}
|
||||||
for destination in hosts
|
for destination in hosts
|
||||||
for device_id in device_ids
|
for device_id in device_ids
|
||||||
|
|
Loading…
Reference in a new issue