diff --git a/consensus/bor/api.go b/consensus/bor/api.go
index d5de0a61cbb537d1998c535ff500bf0d1357e2f7..672d378215aea51b5d6a3d9f0b2b7bbdb55cadec 100644
--- a/consensus/bor/api.go
+++ b/consensus/bor/api.go
@@ -35,7 +35,6 @@ import (
 var (
 	// MaxCheckpointLength is the maximum number of blocks that can be requested for constructing a checkpoint root hash
 	MaxCheckpointLength = uint64(math.Pow(2, 15))
-	once                sync.Once
 )
 
 // API is a user facing RPC API to allow controlling the signer and voting
@@ -124,13 +123,7 @@ func (api *API) GetCurrentValidators() ([]*Validator, error) {
 
 // GetRootHash returns the merkle root of the start to end block headers
 func (api *API) GetRootHash(start int64, end int64) ([]byte, error) {
-	var err error
-	once.Do(func() {
-		if api.rootHashCache == nil {
-			api.rootHashCache, err = lru.NewARC(10)
-		}
-	})
-	if err != nil {
+	if err := api.initializeRootHashCache(); err != nil {
 		return nil, err
 	}
 	key := getRootHashKey(start, end)
@@ -184,6 +177,14 @@ func (api *API) GetRootHash(start int64, end int64) ([]byte, error) {
 	return root, nil
 }
 
+func (api *API) initializeRootHashCache() error {
+	var err error
+	if api.rootHashCache == nil {
+		api.rootHashCache, err = lru.NewARC(10)
+	}
+	return err
+}
+
 func getRootHashKey(start int64, end int64) string {
 	return strconv.FormatInt(start, 10) + "-" + strconv.FormatInt(end, 10)
 }