forked from TrueCloudLab/frostfs-node
[#922] shard: Allow multiple gc.stop() calls
Use `sync.Once` to prevent locks of stopping GC. It will also allow to safely call `Shard.Close` multiple times. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
10f0bd91d6
commit
d6457ee485
1 changed files with 4 additions and 1 deletions
|
@ -52,6 +52,7 @@ type eventHandlers struct {
|
||||||
type gc struct {
|
type gc struct {
|
||||||
*gcCfg
|
*gcCfg
|
||||||
|
|
||||||
|
onceStop sync.Once
|
||||||
stopChannel chan struct{}
|
stopChannel chan struct{}
|
||||||
|
|
||||||
workerPool util.WorkerPool
|
workerPool util.WorkerPool
|
||||||
|
@ -163,7 +164,9 @@ func (gc *gc) tickRemover() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gc *gc) stop() {
|
func (gc *gc) stop() {
|
||||||
gc.stopChannel <- struct{}{}
|
gc.onceStop.Do(func() {
|
||||||
|
gc.stopChannel <- struct{}{}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// iterates over metabase graveyard and deletes objects
|
// iterates over metabase graveyard and deletes objects
|
||||||
|
|
Loading…
Reference in a new issue