master fix interruption through ctrl+c (#3834)

This commit is contained in:
Konstantin Lebedev
2022-10-12 19:18:40 +05:00
committed by GitHub
parent a05725aea6
commit 401315f337
2 changed files with 9 additions and 1 deletions

View File

@@ -4,8 +4,11 @@
package grace
import (
"github.com/seaweedfs/seaweedfs/weed/glog"
"os"
"os/signal"
"reflect"
"runtime"
"sync"
"syscall"
)
@@ -16,6 +19,10 @@ var interruptHookLock sync.RWMutex
var reloadHooks = make([]func(), 0)
var reloadHookLock sync.RWMutex
func GetFunctionName(i interface{}) string {
return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name()
}
func init() {
signalChan = make(chan os.Signal, 1)
signal.Notify(signalChan,
@@ -38,6 +45,7 @@ func init() {
} else {
interruptHookLock.RLock()
for _, hook := range interruptHooks {
glog.V(4).Infof("exec interrupt hook func name:%s", GetFunctionName(hook))
hook()
}
interruptHookLock.RUnlock()