diff --git a/synapse/federation/send_queue.py b/synapse/federation/send_queue.py
index 8a6392c69728d4a53bbdc3231598df011fd787e9..867cba0cf176f39fd66cbbb35bb32237310006ce 100644
--- a/synapse/federation/send_queue.py
+++ b/synapse/federation/send_queue.py
@@ -38,6 +38,10 @@ import synapse.metrics
 from blist import sorteddict
 from collections import namedtuple
 
+import logging
+
+logger = logging.getLogger(__name__)
+
 
 metrics = synapse.metrics.get_metrics_for(__name__)
 
@@ -480,6 +484,10 @@ def process_rows_for_federation(federation_sender, rows):
 
     # Parse the rows in the stream and add to the buffer
     for row in rows:
+        if row.type not in TypeToRow:
+            logger.error("Unrecognized federation row type %r", row.type)
+            continue
+
         RowType = TypeToRow[row.type]
         parsed_row = RowType.from_data(row.data)
         parsed_row.add_to_buffer(buff)