mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	event: Add deduplication of server restart events.
(imported from commit 05467929ba376a0ce173119c5d90d83671fc544b)
This commit is contained in:
		@@ -153,7 +153,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()
 | 
			
		||||
@@ -192,6 +192,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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2506,17 +2506,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,
 | 
			
		||||
@@ -2524,14 +2529,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