From 0aa1d6c41c34349eba4a6349d15a44acb884fe52 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Tue, 11 Nov 2014 15:56:31 -0800 Subject: [PATCH 1/3] Attach a random 32-bit unsigned integer to each message for game protocols. --- lib/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/models.py b/lib/models.py index 882e76b..2aaf5d6 100644 --- a/lib/models.py +++ b/lib/models.py @@ -16,6 +16,7 @@ import json import hashlib import logging +import random import struct from google.appengine.api import channel @@ -223,6 +224,7 @@ class Subject(db.Model): sender=sender, sender_message_id=sender_message_id, sender_address=sender_address, + random_value=random.randint(0, 2 ** 32 - 1), id_=message_id) obj.put() @@ -434,6 +436,7 @@ class Message(db.Model): sender_address = db.StringProperty(required=True) # id is reserved id_ = db.IntegerProperty(required=True) + random_value = db.IntegerProperty(required=True) def ToEvent(self): return { @@ -443,6 +446,7 @@ class Message(db.Model): 'subject': self.parent().ToDict(), 'created': self.created, 'sender_message_id': self.sender_message_id, + 'random_value': self.random_value, 'message': self.message, } From 1ca44a764ee8fe67ff8bc7bcef1fa3b81ed6dce9 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Thu, 13 Nov 2014 13:46:21 -0800 Subject: [PATCH 2/3] Log chaos monkey 503s --- lib/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/utils.py b/lib/utils.py index 64ed36d..f204351 100644 --- a/lib/utils.py +++ b/lib/utils.py @@ -15,6 +15,7 @@ import datetime import functools import json +import logging import random import time @@ -49,6 +50,7 @@ def chaos_monkey(handler): @functools.wraps(handler) def IntroduceFailures(self): if random.random() < config.CHAOS_PROBABILITY: + logging.info('Chaos: returning pre-processing 503') self.response.headers['Retry-After'] = '0' self.error(503) return @@ -56,6 +58,7 @@ def chaos_monkey(handler): ret = handler(self) if random.random() < config.CHAOS_PROBABILITY: + logging.info('Chaos: returning post-processing 503') self.response.headers['Retry-After'] = '0' self.error(503) return @@ -69,7 +72,6 @@ def local_namespace(handler): @functools.wraps(handler) def SetNamespace(self): - import logging namespace_manager.set_namespace(config.NAMESPACE) return handler(self) From eb536ae20a7a00cb5283367dbdb957386ac21537 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 15 Nov 2014 17:30:02 -0800 Subject: [PATCH 3/3] Change XMLHttpRequest call ordering to satisfy firefox. --- static/cosmopolite.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/cosmopolite.js b/static/cosmopolite.js index b0483cb..2517598 100644 --- a/static/cosmopolite.js +++ b/static/cosmopolite.js @@ -929,7 +929,6 @@ Cosmopolite.prototype.sendRPCs_ = function(commands, opt_delay) { } var xhr = new XMLHttpRequest(); - xhr.responseType = 'json'; var retryAfterDelay = (function(newCommands) { // Exponential backoff + random stagger values @@ -957,6 +956,7 @@ Cosmopolite.prototype.sendRPCs_ = function(commands, opt_delay) { 'load', this.onRPCResponse_.bind(this, xhr, retryAfterDelay, commands)); xhr.addEventListener('error', retryAfterDelay.bind(null, commands)); xhr.open('POST', this.urlPrefix_ + '/api'); + xhr.responseType = 'json'; xhr.send(JSON.stringify(request)); };