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
|
# Virtual events are a mechanism for storing pointer changes and other
|
||||||
# easily collapsed event types efficiently.
|
# easily collapsed event types efficiently.
|
||||||
VIRTUAL_EVENT_TYPES = ["pointer", "read/add"]
|
VIRTUAL_EVENT_TYPES = ["pointer", "read/add", "restart"]
|
||||||
class EventQueue(object):
|
class EventQueue(object):
|
||||||
def __init__(self, id):
|
def __init__(self, id):
|
||||||
self.queue = deque()
|
self.queue = deque()
|
||||||
@@ -199,6 +199,8 @@ class EventQueue(object):
|
|||||||
virtual_event["pointer"] = event["pointer"]
|
virtual_event["pointer"] = event["pointer"]
|
||||||
elif full_event_type == "read/add":
|
elif full_event_type == "read/add":
|
||||||
virtual_event["messages"] += event["messages"]
|
virtual_event["messages"] += event["messages"]
|
||||||
|
elif full_event_type == "restart":
|
||||||
|
virtual_event["server_generation"] = event["server_generation"]
|
||||||
else:
|
else:
|
||||||
self.queue.append(event)
|
self.queue.append(event)
|
||||||
|
|
||||||
|
|||||||
@@ -2507,17 +2507,22 @@ class EventQueueTest(TestCase):
|
|||||||
"pointer": pointer_val,
|
"pointer": pointer_val,
|
||||||
"timestamp": str(pointer_val)})
|
"timestamp": str(pointer_val)})
|
||||||
queue.push({"type": "unknown"})
|
queue.push({"type": "unknown"})
|
||||||
|
queue.push({"type": "restart", "server_generation": "1"})
|
||||||
for pointer_val in xrange(11, 20):
|
for pointer_val in xrange(11, 20):
|
||||||
queue.push({"type": "pointer",
|
queue.push({"type": "pointer",
|
||||||
"pointer": pointer_val,
|
"pointer": pointer_val,
|
||||||
"timestamp": str(pointer_val)})
|
"timestamp": str(pointer_val)})
|
||||||
|
queue.push({"type": "restart", "server_generation": "2"})
|
||||||
self.assertEqual(queue.contents(),
|
self.assertEqual(queue.contents(),
|
||||||
[{"type": "unknown",
|
[{"type": "unknown",
|
||||||
"id": 9,},
|
"id": 9,},
|
||||||
{'id': 18,
|
{'id': 19,
|
||||||
'type': 'pointer',
|
'type': 'pointer',
|
||||||
"pointer": 19,
|
"pointer": 19,
|
||||||
"timestamp": "19"}])
|
"timestamp": "19"},
|
||||||
|
{"id": 20,
|
||||||
|
"type": "restart",
|
||||||
|
"server_generation": "2"}])
|
||||||
for pointer_val in xrange(21, 23):
|
for pointer_val in xrange(21, 23):
|
||||||
queue.push({"type": "pointer",
|
queue.push({"type": "pointer",
|
||||||
"pointer": pointer_val,
|
"pointer": pointer_val,
|
||||||
@@ -2525,14 +2530,18 @@ class EventQueueTest(TestCase):
|
|||||||
self.assertEqual(queue.contents(),
|
self.assertEqual(queue.contents(),
|
||||||
[{"type": "unknown",
|
[{"type": "unknown",
|
||||||
"id": 9,},
|
"id": 9,},
|
||||||
{'id': 18,
|
{'id': 19,
|
||||||
'type': 'pointer',
|
'type': 'pointer',
|
||||||
"pointer": 19,
|
"pointer": 19,
|
||||||
"timestamp": "19"},
|
"timestamp": "19"},
|
||||||
{'id': 20,
|
{"id": 20,
|
||||||
|
"type": "restart",
|
||||||
|
"server_generation": "2"},
|
||||||
|
{'id': 22,
|
||||||
'type': 'pointer',
|
'type': 'pointer',
|
||||||
"pointer": 22,
|
"pointer": 22,
|
||||||
"timestamp": "22"},])
|
"timestamp": "22"},
|
||||||
|
])
|
||||||
|
|
||||||
def test_flag_collapsing(self):
|
def test_flag_collapsing(self):
|
||||||
queue = EventQueue("1")
|
queue = EventQueue("1")
|
||||||
|
|||||||
Reference in New Issue
Block a user