Skip to content

Commit 00ddf85

Browse files
committed
Graceful: Make repo indexer shutdown gracefully
1 parent 5b3fa6d commit 00ddf85

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

modules/indexer/repo.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
package indexer
66

77
import (
8+
"context"
9+
"os"
810
"strings"
911
"sync"
1012

13+
"code.gitea.io/gitea/modules/graceful"
1114
"code.gitea.io/gitea/modules/log"
1215
"code.gitea.io/gitea/modules/setting"
1316

@@ -104,10 +107,11 @@ func (update RepoIndexerUpdate) AddToFlushingBatch(batch rupture.FlushingBatch)
104107
func InitRepoIndexer(populateIndexer func() error) {
105108
indexer, err := openIndexer(setting.Indexer.RepoPath, repoIndexerLatestVersion)
106109
if err != nil {
107-
log.Fatal("InitRepoIndexer: %v", err)
110+
log.Fatal("InitRepoIndexer %s: %v", setting.Indexer.RepoPath, err)
108111
}
109112
if indexer != nil {
110113
indexerHolder.set(indexer)
114+
closeAtTerminate()
111115
return
112116
}
113117

@@ -117,6 +121,21 @@ func InitRepoIndexer(populateIndexer func() error) {
117121
if err = populateIndexer(); err != nil {
118122
log.Fatal("PopulateRepoIndex: %v", err)
119123
}
124+
closeAtTerminate()
125+
}
126+
127+
func closeAtTerminate() {
128+
graceful.GetManager().RunAtTerminate(context.Background(), func() {
129+
log.Debug("Closing repo indexer")
130+
indexer := indexerHolder.get()
131+
if indexer != nil {
132+
err := indexer.Close()
133+
if err != nil {
134+
log.Error("Error whilst closing the repository indexer: %v", err)
135+
}
136+
}
137+
log.Info("PID: %d Repository Indexer closed", os.Getpid())
138+
})
120139
}
121140

122141
// createRepoIndexer create a repo indexer if one does not already exist

0 commit comments

Comments
 (0)