Show More
@@ -1166,7 +1166,11 b' class Hub(SessionFactory):' | |||||
1166 | msg = self.session.msg(header['msg_type']) |
|
1166 | msg = self.session.msg(header['msg_type']) | |
1167 | msg_id = msg['msg_id'] |
|
1167 | msg_id = msg['msg_id'] | |
1168 | msg['content'] = rec['content'] |
|
1168 | msg['content'] = rec['content'] | |
1169 | header.update(msg['header']) |
|
1169 | ||
|
1170 | # use the old header, but update msg_id and timestamp | |||
|
1171 | fresh = msg['header'] | |||
|
1172 | header['msg_id'] = fresh['msg_id'] | |||
|
1173 | header['date'] = fresh['date'] | |||
1170 | msg['header'] = header |
|
1174 | msg['header'] = header | |
1171 |
|
1175 | |||
1172 | self.session.send(self.resubmit, msg, buffers=rec['buffers']) |
|
1176 | self.session.send(self.resubmit, msg, buffers=rec['buffers']) |
@@ -312,6 +312,28 b' class TestClient(ClusterTestCase):' | |||||
312 | r2 = ahr.get(1) |
|
312 | r2 = ahr.get(1) | |
313 | self.assertFalse(r1 == r2) |
|
313 | self.assertFalse(r1 == r2) | |
314 |
|
314 | |||
|
315 | def test_resubmit_header(self): | |||
|
316 | """resubmit shouldn't clobber the whole header""" | |||
|
317 | def f(): | |||
|
318 | import random | |||
|
319 | return random.random() | |||
|
320 | v = self.client.load_balanced_view() | |||
|
321 | v.retries = 1 | |||
|
322 | ar = v.apply_async(f) | |||
|
323 | r1 = ar.get(1) | |||
|
324 | # give the Hub a chance to notice: | |||
|
325 | self._wait_for_idle() | |||
|
326 | ahr = self.client.resubmit(ar.msg_ids) | |||
|
327 | ahr.get(1) | |||
|
328 | time.sleep(0.5) | |||
|
329 | records = self.client.db_query({'msg_id': {'$in': ar.msg_ids + ahr.msg_ids}}, keys='header') | |||
|
330 | h1,h2 = [ r['header'] for r in records ] | |||
|
331 | for key in set(h1.keys()).union(set(h2.keys())): | |||
|
332 | if key in ('msg_id', 'date'): | |||
|
333 | self.assertNotEquals(h1[key], h2[key]) | |||
|
334 | else: | |||
|
335 | self.assertEquals(h1[key], h2[key]) | |||
|
336 | ||||
315 | def test_resubmit_aborted(self): |
|
337 | def test_resubmit_aborted(self): | |
316 | def f(): |
|
338 | def f(): | |
317 | import random |
|
339 | import random | |
@@ -384,4 +406,3 b' class TestClient(ClusterTestCase):' | |||||
384 | "Shouldn't be spinning, but got wall_time=%f" % ar.wall_time |
|
406 | "Shouldn't be spinning, but got wall_time=%f" % ar.wall_time | |
385 | ) |
|
407 | ) | |
386 |
|
408 | |||
387 |
|
General Comments 0
You need to be logged in to leave comments.
Login now