mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
event: Add deduplication of server restart events.
(imported from commit e464aa8b68958fb9f9fe8c199b9e73df510d22bc)
This commit is contained in:
@@ -157,7 +157,7 @@ def compute_full_event_type(event):
|
||||
|
||||
# Virtual events are a mechanism for storing pointer changes and other
|
||||
# easily collapsed event types efficiently.
|
||||
VIRTUAL_EVENT_TYPES = ["pointer", "read/add"]
|
||||
VIRTUAL_EVENT_TYPES = ["pointer", "read/add", "restart"]
|
||||
class EventQueue(object):
|
||||
def __init__(self, id):
|
||||
self.queue = deque()
|
||||
@@ -199,6 +199,8 @@ class EventQueue(object):
|
||||
virtual_event["pointer"] = event["pointer"]
|
||||
elif full_event_type == "read/add":
|
||||
virtual_event["messages"] += event["messages"]
|
||||
elif full_event_type == "restart":
|
||||
virtual_event["server_generation"] = event["server_generation"]
|
||||
else:
|
||||
self.queue.append(event)
|
||||
|
||||
|
||||
@@ -2507,17 +2507,22 @@ class EventQueueTest(TestCase):
|
||||
"pointer": pointer_val,
|
||||
"timestamp": str(pointer_val)})
|
||||
queue.push({"type": "unknown"})
|
||||
queue.push({"type": "restart", "server_generation": "1"})
|
||||
for pointer_val in xrange(11, 20):
|
||||
queue.push({"type": "pointer",
|
||||
"pointer": pointer_val,
|
||||
"timestamp": str(pointer_val)})
|
||||
queue.push({"type": "restart", "server_generation": "2"})
|
||||
self.assertEqual(queue.contents(),
|
||||
[{"type": "unknown",
|
||||
"id": 9,},
|
||||
{'id': 18,
|
||||
{'id': 19,
|
||||
'type': 'pointer',
|
||||
"pointer": 19,
|
||||
"timestamp": "19"}])
|
||||
"timestamp": "19"},
|
||||
{"id": 20,
|
||||
"type": "restart",
|
||||
"server_generation": "2"}])
|
||||
for pointer_val in xrange(21, 23):
|
||||
queue.push({"type": "pointer",
|
||||
"pointer": pointer_val,
|
||||
@@ -2525,14 +2530,18 @@ class EventQueueTest(TestCase):
|
||||
self.assertEqual(queue.contents(),
|
||||
[{"type": "unknown",
|
||||
"id": 9,},
|
||||
{'id': 18,
|
||||
{'id': 19,
|
||||
'type': 'pointer',
|
||||
"pointer": 19,
|
||||
"timestamp": "19"},
|
||||
{'id': 20,
|
||||
{"id": 20,
|
||||
"type": "restart",
|
||||
"server_generation": "2"},
|
||||
{'id': 22,
|
||||
'type': 'pointer',
|
||||
"pointer": 22,
|
||||
"timestamp": "22"},])
|
||||
"timestamp": "22"},
|
||||
])
|
||||
|
||||
def test_flag_collapsing(self):
|
||||
queue = EventQueue("1")
|
||||
|
||||
Reference in New Issue
Block a user