diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py
index 6fefb85890eb6efcbfc3620df781ccd09c3690a0..7245d14fabe6b3a5883ca5417c3843fada0f65fe 100644
--- a/synapse/handlers/device.py
+++ b/synapse/handlers/device.py
@@ -203,7 +203,7 @@ class DeviceHandler(BaseHandler):
         hosts = set()
         if self.hs.is_mine_id(user_id):
             for room_id in room_ids:
-                users = yield self.state.get_current_user_in_room(room_id)
+                users = yield self.store.get_users_in_room(room_id)
                 hosts.update(get_domain_from_id(u) for u in users)
             hosts.discard(self.server_name)
 
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py
index 768e0a4451d230b34748b62c22ab414866494a79..6cf1a538ae70df3c9b88676b80fcc00485fc1e03 100644
--- a/synapse/storage/roommember.py
+++ b/synapse/storage/roommember.py
@@ -131,7 +131,7 @@ class RoomMemberStore(SQLBaseStore):
         with self._stream_id_gen.get_next() as stream_ordering:
             yield self.runInteraction("locally_reject_invite", f, stream_ordering)
 
-    @cached(max_entries=5000)
+    @cached(max_entries=1000000, iterable=True)
     def get_users_in_room(self, room_id):
         def f(txn):