diff --git a/packages/components/Polling-server/PollingServer.js b/packages/components/Polling-server/PollingServer.js
index c7c1c479f5724ade6f7d467429f298617b89d218..6667047af2e9266f489322d9c87ad4f85faa7dee 100644
--- a/packages/components/Polling-server/PollingServer.js
+++ b/packages/components/Polling-server/PollingServer.js
@@ -2,7 +2,7 @@ const config = require('config')
 
 const logger = require('@pubsweet/logger')
 
-const lockedFragments = {}
+let lockedFragments = {}
 const initCache = async Fragment => {
   const allFragments = await Fragment.all()
   for (let i = 0; i < allFragments.length; i += 1) {
@@ -12,6 +12,21 @@ const initCache = async Fragment => {
       lockedFragments[id] = currentFragment.lock.editor.userId
     }
   }
+  setInterval(() => cacheSync(Fragment), 8000)
+}
+
+const cacheSync = async Fragment => {
+  logger.info(`Syncing cache`)
+  const syncedLockedFragments = {}
+  const allFragments = await Fragment.all()
+  for (let i = 0; i < allFragments.length; i += 1) {
+    const currentFragment = allFragments[i]
+    if (currentFragment.lock && currentFragment.lock !== null) {
+      const { id } = currentFragment
+      syncedLockedFragments[id] = currentFragment.lock.editor.userId
+    }
+  }
+  lockedFragments = syncedLockedFragments
 }
 
 const PollingServer = app => {
@@ -119,6 +134,7 @@ const PollingServer = app => {
     async (req, res, next) => {
       const { collectionId, fragmentId } = req.params
       const { username } = req.query
+
       logger.info(
         `Initiating polling for fragment with id ${fragmentId} of the collection with id ${collectionId} for user ${username}`,
       )
@@ -208,11 +224,10 @@ const PollingServer = app => {
                 res.sendStatus(403)
               }
             }
+            logger.info(`Setting timmer for ${pollingTime} ms`)
+            setTimer(unlocker, pollingTime, opts)
+            res.sendStatus(200)
           }
-          logger.info(`Setting timmer for ${pollingTime} ms`)
-          setTimer(unlocker, pollingTime, opts)
-
-          res.sendStatus(200)
         }
       } catch (e) {
         logger.error(`In polling endpoint ${e}`)