Compare commits

...

11 Commits

Author SHA1 Message Date
Andrew Morgan
2cf77fd5fa clean things up 2019-10-02 15:41:25 +01:00
Andrew Morgan
9429cb10ce try doing upgrades after remote join 2019-10-02 15:28:37 +01:00
Andrew Morgan
82ba9f4e8e log create_event grabbing 2019-10-02 15:23:57 +01:00
Andrew Morgan
4471ac63c3 more logs 2019-10-02 15:20:39 +01:00
Andrew Morgan
cdfbdcec2c yieeeeeeeeeeeeeeeeeeeld 2019-10-02 15:18:31 +01:00
Andrew Morgan
fb78554b70 Try moving to _update_membership 2019-10-02 14:55:20 +01:00
Andrew Morgan
e92c163f1c Merge branch 'develop' of github.com:matrix-org/synapse into anoa/tag_transfer_logging 2019-10-02 12:05:35 +01:00
Andrew Morgan
682f554e9b less logging 2019-10-01 18:24:11 +01:00
Andrew Morgan
7f0419e71b less logging 2019-10-01 18:21:15 +01:00
Andrew Morgan
ca85c67165 Don't delete old push rule 2019-10-01 18:18:59 +01:00
Andrew Morgan
46403246ae add debug logging 2019-10-01 17:02:52 +01:00
3 changed files with 48 additions and 17 deletions

View File

@@ -205,21 +205,6 @@ class RoomMemberHandler(object):
if newly_joined:
yield self._user_joined_room(target, room_id)
# Copy over direct message status and room tags if this is a join
# on an upgraded room
# Check if this is an upgraded room
predecessor = yield self.store.get_room_predecessor(room_id)
if predecessor:
# It is an upgraded room. Copy over old tags
self.copy_room_tags_and_direct_to_room(
predecessor["room_id"], room_id, user_id
)
# Copy over push rules
yield self.store.copy_push_rules_from_room_to_room_for_user(
predecessor["room_id"], room_id, user_id
)
elif event.membership == Membership.LEAVE:
if prev_member_event_id:
prev_member_event = yield self.store.get_event(prev_member_event_id)
@@ -240,30 +225,46 @@ class RoomMemberHandler(object):
Returns:
Deferred[None]
"""
logger.info(
"### Copying room tags and direct room state from %s to %s for %s",
old_room_id,
new_room_id,
user_id,
)
# Retrieve user account data for predecessor room
user_account_data, _ = yield self.store.get_account_data_for_user(user_id)
# Copy direct message state if applicable
direct_rooms = user_account_data.get("m.direct", {})
logger.info("### Found direct rooms: %s", direct_rooms)
# Check which key this room is under
if isinstance(direct_rooms, dict):
for key, room_id_list in direct_rooms.items():
if old_room_id in room_id_list and new_room_id not in room_id_list:
# Add new room_id to this key
logger.info("### Appending %s to %s", new_room_id, key)
direct_rooms[key].append(new_room_id)
# Save back to user's m.direct account data
logger.info("### Saving account data")
yield self.store.add_account_data_for_user(
user_id, "m.direct", direct_rooms
)
break
# Copy room tags if applicable
logger.info("### Copying room tags")
room_tags = yield self.store.get_tags_for_room(user_id, old_room_id)
logger.info("### Got tags for old room id %s: %s", old_room_id, room_tags)
# Copy each room tag to the new room
for tag, tag_content in room_tags.items():
logger.info(
"### Adding tag %s with content %s to %s", tag, tag_content, new_room_id
)
yield self.store.add_tag_to_room(user_id, new_room_id, tag, tag_content)
@defer.inlineCallbacks
@@ -463,10 +464,30 @@ class RoomMemberHandler(object):
if requester.is_guest:
content["kind"] = "guest"
ret = yield self._remote_join(
remote_join_response = yield self._remote_join(
requester, remote_room_hosts, room_id, target, content
)
return ret
# Copy over direct message status and room tags if this is a join
# on an upgraded room
# Check if this is an upgraded room
predecessor = yield self.store.get_room_predecessor(room_id)
logger.debug("Found predecessor for %s: %s. Copying over room tags and push "
"rules", room_id, predecessor)
if predecessor:
# It is an upgraded room. Copy over old tags
yield self.copy_room_tags_and_direct_to_room(
predecessor["room_id"], room_id, requester.user.to_string()
)
# Copy over push rules
yield self.store.copy_push_rules_from_room_to_room_for_user(
predecessor["room_id"], room_id, requester.user.to_string()
)
return remote_join_response
elif effective_membership_state == Membership.LEAVE:
if not is_host_in_room:

View File

@@ -191,6 +191,7 @@ class PushRulesWorkerStore(
user_id (str): ID of user the push rule belongs to.
rule (Dict): A push rule.
"""
logger.info("### Moving rule to %s: %s", new_room_id, rule)
# Create new rule id
rule_id_scope = "/".join(rule["rule_id"].split("/")[:-1])
new_rule_id = rule_id_scope + "/" + new_room_id
@@ -222,6 +223,12 @@ class PushRulesWorkerStore(
user_id (str): ID of user to copy push rules for.
"""
# Retrieve push rules for this user
logger.info(
"### Copying push rules from %s to %s for %s",
old_room_id,
new_room_id,
user_id,
)
user_push_rules = yield self.get_push_rules_for_user(user_id)
# Get rules relating to the old room and copy them to the new room
@@ -345,6 +352,7 @@ class PushRuleStore(PushRulesWorkerStore):
before=None,
after=None,
):
logger.info("### add_push_rule adding rule id: %s", rule_id)
conditions_json = json.dumps(conditions)
actions_json = json.dumps(actions)
with self._push_rules_stream_id_gen.get_next() as ids:
@@ -389,6 +397,7 @@ class PushRuleStore(PushRulesWorkerStore):
before,
after,
):
logger.info("### Relative transaction running")
# Lock the table since otherwise we'll have annoying races between the
# SELECT here and the UPSERT below.
self.database_engine.lock_table(txn, "push_rules")

View File

@@ -459,6 +459,7 @@ class StateGroupWorkerStore(EventsWorkerStore, SQLBaseStore):
"""
state_ids = yield self.get_current_state_ids(room_id)
create_id = state_ids.get((EventTypes.Create, ""))
logger.info("### State IDs: %s, Room ID: %s, Create ID: %s", state_ids, room_id, create_id)
# If we can't find the create event, assume we've hit a dead end
if not create_id: