diff --git a/store/page.go b/store/page.go
index 937b1952570070671618e8c9c894d93557fd9861..8a1a623041275f5c1a81b846b006c90526c72511 100644
--- a/store/page.go
+++ b/store/page.go
@@ -12,10 +12,18 @@ const PageSize = 64
 
 // pageDB returns leveldb of page variant and creates it as required.
 func (s *Store) pageDB(variant string) *leveldb.DB {
+	l := s.getLock("pageDB_get")
+	l.RLock()
+	defer l.RUnlock()
+
 	if s.pageldb[variant] != nil {
 		return s.pageldb[variant]
 	} else {
+		l.RUnlock()
+		l.Lock()
 		if db, err := leveldb.OpenFile(s.PageVariantPath(variant), nil); err != nil {
+			l.Unlock()
+			l.RLock()
 			s.fatalClose(fmt.Sprintf("Error opening leveldb for page variant %s, %s", variant, err))
 		} else {
 			s.pageldb[variant] = db
@@ -23,6 +31,8 @@ func (s *Store) pageDB(variant string) *leveldb.DB {
 				log.Infof("Page variant %s created.", variant)
 				s.pageSetTotalCountNoDestroy(variant, 0)
 			}
+			l.Unlock()
+			l.RLock()
 			return db
 		}
 	}