From 8b2f29c0d2e571b45f004646d3b5e6bac1c2c419 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Wed, 25 Dec 2019 17:44:09 +0800
Subject: [PATCH] fix datarace on issue indexer queue (#9490)

---
 modules/indexer/code/indexer.go | 2 ++
 modules/indexer/code/queue.go   | 5 ++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/modules/indexer/code/indexer.go b/modules/indexer/code/indexer.go
index 04d556f541f9..3f9461cd0e58 100644
--- a/modules/indexer/code/indexer.go
+++ b/modules/indexer/code/indexer.go
@@ -38,6 +38,8 @@ func Init() {
 		return
 	}
 
+	initQueue(setting.Indexer.UpdateQueueLength)
+
 	ctx, cancel := context.WithCancel(context.Background())
 
 	graceful.GetManager().RunAtTerminate(ctx, func() {
diff --git a/modules/indexer/code/queue.go b/modules/indexer/code/queue.go
index 82cd8ded5393..4eeb6ac7d404 100644
--- a/modules/indexer/code/queue.go
+++ b/modules/indexer/code/queue.go
@@ -21,8 +21,11 @@ type repoIndexerOperation struct {
 
 var repoIndexerOperationQueue chan repoIndexerOperation
 
+func initQueue(queueLength int) {
+	repoIndexerOperationQueue = make(chan repoIndexerOperation, queueLength)
+}
+
 func processRepoIndexerOperationQueue(indexer Indexer) {
-	repoIndexerOperationQueue = make(chan repoIndexerOperation, setting.Indexer.UpdateQueueLength)
 	for {
 		select {
 		case op := <-repoIndexerOperationQueue: