diff --git a/changelog.d/18418.removal b/changelog.d/18418.removal new file mode 100644 index 00000000000..ff1d081d8fe --- /dev/null +++ b/changelog.d/18418.removal @@ -0,0 +1 @@ +Stop adding the "origin" field to newly-created events (PDUs). \ No newline at end of file diff --git a/contrib/graph/graph.py b/contrib/graph/graph.py index 1d74fee822c..a16c6fd2878 100644 --- a/contrib/graph/graph.py +++ b/contrib/graph/graph.py @@ -45,6 +45,8 @@ def make_graph(pdus: List[dict], filename_prefix: str) -> None: colors = {"red", "green", "blue", "yellow", "purple"} for pdu in pdus: + # TODO: The "origin" field have since been removed from events generated + # by Synapse. origins.add(pdu.get("origin")) color_map = {color: color for color in colors if color in origins} diff --git a/docs/admin_api/event_reports.md b/docs/admin_api/event_reports.md index 9075e928822..225b4317155 100644 --- a/docs/admin_api/event_reports.md +++ b/docs/admin_api/event_reports.md @@ -117,7 +117,6 @@ It returns a JSON body like the following: "hashes": { "sha256": "xK1//xnmvHJIOvbgXlkI8eEqdvoMmihVDJ9J4SNlsAw" }, - "origin": "matrix.org", "origin_server_ts": 1592291711430, "prev_events": [ "$YK4arsKKcc0LRoe700pS8DSjOvUT4NDv0HfInlMFw2M" diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py index a85e66d6bf7..c77d569e2e7 100644 --- a/synapse/events/__init__.py +++ b/synapse/events/__init__.py @@ -208,7 +208,6 @@ def __init__( depth: DictProperty[int] = DictProperty("depth") content: DictProperty[JsonDict] = DictProperty("content") hashes: DictProperty[Dict[str, str]] = DictProperty("hashes") - origin: DictProperty[str] = DictProperty("origin") origin_server_ts: DictProperty[int] = DictProperty("origin_server_ts") room_id: DictProperty[str] = DictProperty("room_id") sender: DictProperty[str] = DictProperty("sender") diff --git a/synapse/events/builder.py b/synapse/events/builder.py index 76df083d691..8b776a2097a 100644 --- a/synapse/events/builder.py +++ b/synapse/events/builder.py @@ -319,7 +319,6 @@ def create_local_event_from_event_dict( if format_version == EventFormatVersions.ROOM_V1_V2: event_dict["event_id"] = _create_event_id(clock, hostname) - event_dict["origin"] = hostname event_dict.setdefault("origin_server_ts", time_now) event_dict.setdefault("unsigned", {}) diff --git a/synapse/events/validator.py b/synapse/events/validator.py index d1fb026cd63..15095cc4ef9 100644 --- a/synapse/events/validator.py +++ b/synapse/events/validator.py @@ -67,7 +67,6 @@ def validate_new(self, event: EventBase, config: HomeServerConfig) -> None: "auth_events", "content", "hashes", - "origin", "prev_events", "sender", "type", @@ -77,13 +76,6 @@ def validate_new(self, event: EventBase, config: HomeServerConfig) -> None: if k not in event: raise SynapseError(400, "Event does not have key %s" % (k,)) - # Check that the following keys have string values - event_strings = ["origin"] - - for s in event_strings: - if not isinstance(getattr(event, s), str): - raise SynapseError(400, "'%s' not a string type" % (s,)) - # Depending on the room version, ensure the data is spec compliant JSON. if event.room_version.strict_canonicaljson: validate_canonicaljson(event.get_pdu_json()) diff --git a/synapse/util/caches/__init__.py b/synapse/util/caches/__init__.py index df8829baeba..76e6e139c6f 100644 --- a/synapse/util/caches/__init__.py +++ b/synapse/util/caches/__init__.py @@ -225,7 +225,7 @@ def register_cache( "depth", "event_id", "hashes", - "origin", + "origin", # old events were created with an origin field. "origin_server_ts", "prev_events", "room_id", diff --git a/tests/crypto/test_event_signing.py b/tests/crypto/test_event_signing.py index d7b9fb8bc6f..175b2aa0d02 100644 --- a/tests/crypto/test_event_signing.py +++ b/tests/crypto/test_event_signing.py @@ -48,7 +48,6 @@ def setUp(self) -> None: def test_sign_minimal(self) -> None: event_dict = { "event_id": "$0:domain", - "origin": "domain", "origin_server_ts": 1000000, "signatures": {}, "type": "X", @@ -80,7 +79,6 @@ def test_sign_message(self) -> None: event_dict = { "content": {"body": "Here is the message content"}, "event_id": "$0:domain", - "origin": "domain", "origin_server_ts": 1000000, "type": "m.room.message", "room_id": "!r:domain", diff --git a/tests/events/test_utils.py b/tests/events/test_utils.py index 654e6521a20..6f8a36d7d42 100644 --- a/tests/events/test_utils.py +++ b/tests/events/test_utils.py @@ -122,7 +122,6 @@ def test_basic_keys(self) -> None: "prev_events": "prev_events", "prev_state": "prev_state", "auth_events": "auth_events", - "origin": "domain", "origin_server_ts": 1234, "membership": "join", # Also include a key that should be removed. @@ -139,7 +138,6 @@ def test_basic_keys(self) -> None: "prev_events": "prev_events", "prev_state": "prev_state", "auth_events": "auth_events", - "origin": "domain", "origin_server_ts": 1234, "membership": "join", "content": {}, @@ -148,13 +146,12 @@ def test_basic_keys(self) -> None: }, ) - # As of room versions we now redact the membership, prev_states, and origin keys. + # As of room versions we now redact the membership and prev_states keys. self.run_test( { "type": "A", "prev_state": "prev_state", "membership": "join", - "origin": "example.com", }, {"type": "A", "content": {}, "signatures": {}, "unsigned": {}}, room_version=RoomVersions.V11, @@ -238,7 +235,6 @@ def test_create(self) -> None: { "type": "m.room.create", "content": {"not_a_real_key": True}, - "origin": "some_homeserver", "nonsense_field": "some_random_garbage", }, { diff --git a/tests/federation/test_federation_server.py b/tests/federation/test_federation_server.py index 42dc8447349..439fecbd61f 100644 --- a/tests/federation/test_federation_server.py +++ b/tests/federation/test_federation_server.py @@ -533,7 +533,6 @@ def test_strip_unauthorized_unsigned_values(self) -> None: "depth": 1000, "origin_server_ts": 1, "type": "m.room.member", - "origin": "test.servx", "content": {"membership": "join"}, "auth_events": [], "unsigned": {"malicious garbage": "hackz", "more warez": "more hackz"}, @@ -550,7 +549,6 @@ def test_strip_event_maintains_allowed_fields(self) -> None: "depth": 1000, "origin_server_ts": 1, "type": "m.room.member", - "origin": "test.servx", "auth_events": [], "content": {"membership": "join"}, "unsigned": { @@ -577,7 +575,6 @@ def test_strip_event_removes_fields_based_on_event_type(self) -> None: "depth": 1000, "origin_server_ts": 1, "type": "m.room.power_levels", - "origin": "test.servx", "content": {}, "auth_events": [], "unsigned": {