mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 08:36:03 -04:00
Fix wait_for_stream_position
for multiple waiters. (#8196)
This fixes a bug where having multiple callers waiting on the same stream and position will cause it to try and compare two deferreds, which fails (due to the sorted list having an entry of `Tuple[int, Deferred]`).
This commit is contained in:
parent
d58fda99ff
commit
3b4556cf87
3 changed files with 6 additions and 5 deletions
|
@ -14,7 +14,6 @@
|
|||
# limitations under the License.
|
||||
"""A replication client for use by synapse workers.
|
||||
"""
|
||||
import heapq
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Dict, List, Tuple
|
||||
|
||||
|
@ -219,9 +218,8 @@ class ReplicationDataHandler:
|
|||
|
||||
waiting_list = self._streams_to_waiters.setdefault(stream_name, [])
|
||||
|
||||
# We insert into the list using heapq as it is more efficient than
|
||||
# pushing then resorting each time.
|
||||
heapq.heappush(waiting_list, (position, deferred))
|
||||
waiting_list.append((position, deferred))
|
||||
waiting_list.sort(key=lambda t: t[0])
|
||||
|
||||
# We measure here to get in flight counts and average waiting time.
|
||||
with Measure(self._clock, "repl.wait_for_stream_position"):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue