Merge branch 'develop' of github.com:matrix-org/synapse into erikj/state_storage

This commit is contained in:
Erik Johnston 2016-09-05 11:53:11 +01:00
commit bb36b93f71
3 changed files with 12 additions and 4 deletions

View File

@ -85,6 +85,12 @@ class RoomMemberHandler(BaseHandler):
prev_event_ids=prev_event_ids, prev_event_ids=prev_event_ids,
) )
# Check if this event matches the previous membership event for the user.
duplicate = yield msg_handler.deduplicate_state_event(event, context)
if duplicate is not None:
# Discard the new event since this membership change is a no-op.
return
yield msg_handler.handle_new_client_event( yield msg_handler.handle_new_client_event(
requester, requester,
event, event,

View File

@ -576,7 +576,7 @@ class SyncHandler(object):
logger.debug("Getting messages up to %d", now_token.to_device_key) logger.debug("Getting messages up to %d", now_token.to_device_key)
messages, stream_id = yield self.store.get_new_messages_for_device( messages, stream_id = yield self.store.get_new_messages_for_device(
user_id, device_id, now_token.to_device_key user_id, device_id, since_stream_id, now_token.to_device_key
) )
logger.debug("Got messages up to %d: %r", stream_id, messages) logger.debug("Got messages up to %d: %r", stream_id, messages)
sync_result_builder.now_token = now_token.copy_and_replace( sync_result_builder.now_token = now_token.copy_and_replace(

View File

@ -85,7 +85,7 @@ class DeviceInboxStore(SQLBaseStore):
defer.returnValue(self._device_inbox_id_gen.get_current_token()) defer.returnValue(self._device_inbox_id_gen.get_current_token())
def get_new_messages_for_device( def get_new_messages_for_device(
self, user_id, device_id, current_stream_id, limit=100 self, user_id, device_id, last_stream_id, current_stream_id, limit=100
): ):
""" """
Args: Args:
@ -101,11 +101,13 @@ class DeviceInboxStore(SQLBaseStore):
sql = ( sql = (
"SELECT stream_id, message_json FROM device_inbox" "SELECT stream_id, message_json FROM device_inbox"
" WHERE user_id = ? AND device_id = ?" " WHERE user_id = ? AND device_id = ?"
" AND stream_id <= ?" " AND ? < stream_id AND stream_id <= ?"
" ORDER BY stream_id ASC" " ORDER BY stream_id ASC"
" LIMIT ?" " LIMIT ?"
) )
txn.execute(sql, (user_id, device_id, current_stream_id, limit)) txn.execute(sql, (
user_id, device_id, last_stream_id, current_stream_id, limit
))
messages = [] messages = []
for row in txn.fetchall(): for row in txn.fetchall():
stream_pos = row[0] stream_pos = row[0]