From b2800145733c991c26c6929674188983648b7336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Avoustin?= Date: Tue, 8 Nov 2016 10:48:53 +0100 Subject: [PATCH] fix calculated streamRevision for redis to avoid events sorting issues streamRevision field of an event calculated in lua script was not casted to an int it could cause a sorting issue of events when they are loaded --- lib/databases/redis/commit.lua | 4 ++-- test/storeTest.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/databases/redis/commit.lua b/lib/databases/redis/commit.lua index 2e5574b0..d4780b56 100644 --- a/lib/databases/redis/commit.lua +++ b/lib/databases/redis/commit.lua @@ -5,7 +5,7 @@ local revisionKey = KEYS[3] .. ':revision' local revision = redis.call('GET', revisionKey) if (not revision) then revision = 0 end redis.call('INCR', revisionKey) -event['streamRevision'] = revision +event['streamRevision'] = tonumber(revision) redis.call('SET', key, cjson.encode(event)) -return revision +return tonumber(revision) diff --git a/test/storeTest.js b/test/storeTest.js index 15612e4f..dc07b99f 100644 --- a/test/storeTest.js +++ b/test/storeTest.js @@ -226,6 +226,7 @@ types.forEach(function (type) { expect(evts[1].aggregateId).to.eql(event2.aggregateId); expect(evts[1].commitId).to.eql(event2.commitId); expect(evts[1].payload.event).to.eql(event2.payload.event); + expect(evts[1].streamRevision).to.be.a('number'); store.getLastEvent({ aggregateId: event2.aggregateId }, function(err, evt) { expect(err).not.to.be.ok();