Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
synapse
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Maunium
synapse
Commits
5dbff345
Commit
5dbff345
authored
5 years ago
by
Erik Johnston
Browse files
Options
Downloads
Patches
Plain Diff
Fixup bsaed on review comments
parent
d46aab3f
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
synapse/events/utils.py
+1
-3
1 addition, 3 deletions
synapse/events/utils.py
synapse/replication/slave/storage/events.py
+1
-1
1 addition, 1 deletion
synapse/replication/slave/storage/events.py
synapse/storage/relations.py
+17
-15
17 additions, 15 deletions
synapse/storage/relations.py
with
19 additions
and
19 deletions
synapse/events/utils.py
+
1
−
3
View file @
5dbff345
...
...
@@ -368,9 +368,7 @@ class EventClientSerializer(object):
edit
=
None
if
event
.
type
==
EventTypes
.
Message
:
edit
=
yield
self
.
store
.
get_applicable_edit
(
event
.
event_id
,
event
.
type
,
event
.
sender
,
)
edit
=
yield
self
.
store
.
get_applicable_edit
(
event_id
)
if
edit
:
# If there is an edit replace the content, preserving existing
...
...
This diff is collapsed.
Click to expand it.
synapse/replication/slave/storage/events.py
+
1
−
1
View file @
5dbff345
...
...
@@ -143,4 +143,4 @@ class SlavedEventStore(EventFederationWorkerStore,
if
relates_to
:
self
.
get_relations_for_event
.
invalidate_many
((
relates_to
,))
self
.
get_aggregation_groups_for_event
.
invalidate_many
((
relates_to
,))
self
.
get_applicable_edit
.
invalidate
_many
((
relates_to
,))
self
.
get_applicable_edit
.
invalidate
((
relates_to
,))
This diff is collapsed.
Click to expand it.
synapse/storage/relations.py
+
17
−
15
View file @
5dbff345
...
...
@@ -19,7 +19,7 @@ import attr
from
twisted.internet
import
defer
from
synapse.api.constants
import
EventTypes
,
RelationTypes
from
synapse.api.constants
import
RelationTypes
from
synapse.api.errors
import
SynapseError
from
synapse.storage._base
import
SQLBaseStore
from
synapse.storage.stream
import
generate_pagination_where_clause
...
...
@@ -314,8 +314,8 @@ class RelationsWorkerStore(SQLBaseStore):
"
get_aggregation_groups_for_event
"
,
_get_aggregation_groups_for_event_txn
)
@cachedInlineCallbacks
(
tree
=
True
)
def
get_applicable_edit
(
self
,
event_id
,
event_type
,
sender
):
@cachedInlineCallbacks
()
def
get_applicable_edit
(
self
,
event_id
):
"""
Get the most recent edit (if any) that has happened for the given
event.
...
...
@@ -323,8 +323,6 @@ class RelationsWorkerStore(SQLBaseStore):
Args:
event_id (str): The original event ID
event_type (str): The original event type
sender (str): The original event sender
Returns:
Deferred[EventBase|None]: Returns the most recent edit, if any.
...
...
@@ -332,26 +330,28 @@ class RelationsWorkerStore(SQLBaseStore):
# We only allow edits for `m.room.message` events that have the same sender
# and event type. We can't assert these things during regular event auth so
# we have to do the post hoc.
if
event_type
!=
EventTypes
.
Message
:
return
# we have to do the checks post hoc.
# Fetches latest edit that has the same type and sender as the
# original, and is an `m.room.message`.
sql
=
"""
SELECT event_id
, origin_server_ts
FROM events
SELECT
edit.
event_id FROM events
AS edit
INNER JOIN event_relations USING (event_id)
INNER JOIN events AS original ON
original.event_id = relates_to_id
AND edit.type = original.type
AND edit.sender = original.sender
WHERE
relates_to_id = ?
AND relation_type = ?
AND type = ?
AND sender = ?
ORDER by origin_server_ts DESC, event_id DESC
AND edit.type =
'
m.room.message
'
ORDER by edit.origin_server_ts DESC, edit.event_id DESC
LIMIT 1
"""
def
_get_applicable_edit_txn
(
txn
):
txn
.
execute
(
sql
,
(
event_id
,
RelationTypes
.
REPLACES
,
event_type
,
sender
)
sql
,
(
event_id
,
RelationTypes
.
REPLACES
,)
)
row
=
txn
.
fetchone
()
if
row
:
...
...
@@ -412,4 +412,6 @@ class RelationsStore(RelationsWorkerStore):
txn
.
call_after
(
self
.
get_aggregation_groups_for_event
.
invalidate_many
,
(
parent_id
,)
)
txn
.
call_after
(
self
.
get_applicable_edit
.
invalidate_many
,
(
parent_id
,))
if
rel_type
==
RelationTypes
.
REPLACES
:
txn
.
call_after
(
self
.
get_applicable_edit
.
invalidate
,
(
parent_id
,))
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment