diff --git a/services/document-updater/app/coffee/RedisManager.coffee b/services/document-updater/app/coffee/RedisManager.coffee index 5e2cc5c84b..365156ebf6 100644 --- a/services/document-updater/app/coffee/RedisManager.coffee +++ b/services/document-updater/app/coffee/RedisManager.coffee @@ -113,7 +113,17 @@ module.exports = RedisManager = if doc_project_id? and doc_project_id isnt project_id logger.error project_id: project_id, doc_id: doc_id, doc_project_id: doc_project_id, "doc not in project" return callback(new Errors.NotFoundError("document not found")) - callback null, docLines, version, ranges + + # doc is not in redis, bail out + if !lines? + return callback null, docLines, version, ranges + + # doc should be in project set, check if missing (workaround for missing docs from putDoc) + rclient.sadd keys.docsInProject(project_id:project_id), doc_id, (error, result) -> + return callback(error) if error? + if result isnt 0 # doc should already be in set + logger.error project_id: project_id, doc_id: doc_id, doc_project_id: doc_project_id, "doc missing from docsInProject set" + callback null, docLines, version, ranges getDocVersion: (doc_id, callback = (error, version) ->) -> rclient.get keys.docVersion(doc_id: doc_id), (error, version) -> diff --git a/services/document-updater/test/unit/coffee/RedisManager/RedisManagerTests.coffee b/services/document-updater/test/unit/coffee/RedisManager/RedisManagerTests.coffee index 26eaaf0892..b97bdd5a0d 100644 --- a/services/document-updater/test/unit/coffee/RedisManager/RedisManagerTests.coffee +++ b/services/document-updater/test/unit/coffee/RedisManager/RedisManagerTests.coffee @@ -58,6 +58,7 @@ describe "RedisManager", -> @json_ranges = JSON.stringify @ranges @rclient.get = sinon.stub() @rclient.exec = sinon.stub().callsArgWith(0, null, [@jsonlines, @version, @hash, @project_id, @json_ranges]) + @rclient.sadd = sinon.stub().yields() describe "successfully", -> beforeEach ->