summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2015-03-20 19:21:13 +0000
committerPaul "LeoNerd" Evans <paul@matrix.org>2015-03-20 19:21:13 +0000
commit72d84064094be60a907ca515739e2a4ea1af0bd5 (patch)
tree7531e5c68b8cfbf21a7d7f0289e1880d87cd9ed7 /synapse/storage
parentRemember the 'last seen' time for a given user/IP/device combination and only... (diff)
downloadsynapse-72d84064094be60a907ca515739e2a4ea1af0bd5.tar.xz
Put a cache on get_aliases_for_room
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/directory.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/synapse/storage/directory.py b/synapse/storage/directory.py
index 6672752fe0..0199539fea 100644
--- a/synapse/storage/directory.py
+++ b/synapse/storage/directory.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from ._base import SQLBaseStore
+from ._base import SQLBaseStore, cached
 
 from synapse.api.errors import SynapseError
 
@@ -106,14 +106,19 @@ class DirectoryStore(SQLBaseStore):
                 },
                 desc="create_room_alias_association",
             )
+        self.get_aliases_for_room.invalidate(room_id)
 
+    @defer.inlineCallbacks
     def delete_room_alias(self, room_alias):
-        return self.runInteraction(
+        room_id = yield self.runInteraction(
             "delete_room_alias",
             self._delete_room_alias_txn,
             room_alias,
         )
 
+        self.get_aliases_for_room.invalidate(room_id)
+        defer.returnValue(room_id)
+
     def _delete_room_alias_txn(self, txn, room_alias):
         cursor = txn.execute(
             "SELECT room_id FROM room_aliases WHERE room_alias = ?",
@@ -138,6 +143,7 @@ class DirectoryStore(SQLBaseStore):
 
         return room_id
 
+    @cached()
     def get_aliases_for_room(self, room_id):
         return self._simple_select_onecol(
             "room_aliases",