From 913388ab347d761b3b25b42cca1454dae66e5059 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Sat, 1 Jun 2013 19:38:47 +0300 Subject: [PATCH] Cache invalidation in API for presets and presets hash --- api.coffee | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/api.coffee b/api.coffee index bdd3185..d249b3e 100644 --- a/api.coffee +++ b/api.coffee @@ -67,6 +67,8 @@ else preset._id = presetName db.presetsCollection.save(preset, (err) -> + db.memcached.del('presets', (err, res) -> + ) db.memcached.del('presets_hash', (err, res) -> ) if err @@ -78,6 +80,8 @@ else ) else if request.method == 'DELETE' db.presetsCollection.remove({'_id' : presetName}, (err, removedCount) -> + db.memcached.del('presets', (err, res) -> + ) db.memcached.del('presets_hash', (err, res) -> ) if err @@ -96,6 +100,8 @@ else tag = querystring.unescape(r[2]) if request.method == 'POST' db.devicesCollection.update({'_id' : deviceId}, {'$addToSet' : {'_tags' : tag}}, {safe: true}, (err) -> + db.memcached.del("#{deviceId}_presets_hash", (err, res) -> + ) if err response.writeHead(500) response.end(err) @@ -105,6 +111,8 @@ else ) else if request.method == 'DELETE' db.devicesCollection.update({'_id' : deviceId}, {'$pull' : {'_tags' : tag}}, {safe: true}, (err) -> + db.memcached.del("#{deviceId}_presets_hash", (err, res) -> + ) if err response.writeHead(500) response.end(err) @@ -119,9 +127,11 @@ else if request.method == 'POST' deviceId = querystring.unescape(DEVICE_TASKS_REGEX.exec(urlParts.pathname)[1]) if body - t = JSON.parse(body) - t.device = deviceId - apiFunctions.insertTasks(t, (err) -> + task = JSON.parse(body) + task.device = deviceId + apiFunctions.insertTasks(task, (err) -> + db.memcached.del("#{deviceId}_presets_hash", (err, res) -> + ) if err response.writeHead(500) response.end(err) @@ -182,6 +192,7 @@ else else if action is '/retry' if request.method == 'POST' db.tasksCollection.update({_id : taskId}, {$unset : {fault : 1}, $inc : {retries : 1}, '$set' : {timestamp : new Date()}}, (err, count) -> + # TODO need to invalidate presets hash for the device response.writeHead(200) response.end() )