diff --git a/cmd/ks-apiserver/app/server.go b/cmd/ks-apiserver/app/server.go index ad42e87f3..fbd960770 100644 --- a/cmd/ks-apiserver/app/server.go +++ b/cmd/ks-apiserver/app/server.go @@ -18,7 +18,6 @@ package app import ( - "bytes" goflag "flag" "fmt" "github.com/golang/glog" @@ -33,12 +32,12 @@ import ( "kubesphere.io/kubesphere/pkg/informers" "kubesphere.io/kubesphere/pkg/models/devops" logging "kubesphere.io/kubesphere/pkg/models/log" + "kubesphere.io/kubesphere/pkg/server" "kubesphere.io/kubesphere/pkg/signals" "kubesphere.io/kubesphere/pkg/simple/client/admin_jenkins" "kubesphere.io/kubesphere/pkg/simple/client/devops_mysql" "log" "net/http" - goRuntime "runtime" ) var jsonIter = jsoniter.ConfigCompatibleWithStandardLibrary @@ -76,7 +75,7 @@ func Run(s *options.ServerRunOptions) error { container := runtime.Container container.DoNotRecover(false) container.Filter(filter.Logging) - container.RecoverHandler(logStackOnRecover) + container.RecoverHandler(server.LogStackOnRecover) for _, webservice := range container.RegisteredWebServices() { for _, route := range webservice.Routes() { log.Println(route.Method, route.Path) @@ -197,18 +196,3 @@ func waitForResourceSync() { log.Println("resources sync success") } - -func logStackOnRecover(panicReason interface{}, httpWriter http.ResponseWriter) { - var buffer bytes.Buffer - buffer.WriteString(fmt.Sprintf("recover from panic situation: - %v\r\n", panicReason)) - for i := 2; ; i += 1 { - _, file, line, ok := goRuntime.Caller(i) - if !ok { - break - } - buffer.WriteString(fmt.Sprintf(" %s:%d\r\n", file, line)) - } - glog.Error(buffer.String()) - httpWriter.WriteHeader(http.StatusInternalServerError) - httpWriter.Write([]byte("recover from panic situation")) -} diff --git a/cmd/ks-iam/app/server.go b/cmd/ks-iam/app/server.go index 6a753137e..cd9e31c6d 100644 --- a/cmd/ks-iam/app/server.go +++ b/cmd/ks-iam/app/server.go @@ -18,7 +18,6 @@ package app import ( - "bytes" goflag "flag" "fmt" "github.com/golang/glog" @@ -29,13 +28,13 @@ import ( "kubesphere.io/kubesphere/pkg/filter" "kubesphere.io/kubesphere/pkg/informers" "kubesphere.io/kubesphere/pkg/models/iam" + "kubesphere.io/kubesphere/pkg/server" "kubesphere.io/kubesphere/pkg/signals" "kubesphere.io/kubesphere/pkg/simple/client/admin_jenkins" "kubesphere.io/kubesphere/pkg/simple/client/devops_mysql" "kubesphere.io/kubesphere/pkg/utils/jwtutil" "log" "net/http" - goRuntime "runtime" "time" ) @@ -86,7 +85,7 @@ func Run(s *options.ServerRunOptions) error { container := runtime.Container container.Filter(filter.Logging) container.DoNotRecover(false) - container.RecoverHandler(logStackOnRecover) + container.RecoverHandler(server.LogStackOnRecover) for _, webservice := range container.RegisteredWebServices() { for _, route := range webservice.Routes() { @@ -136,18 +135,3 @@ func initializeAdminJenkins() { func initializeDevOpsDatabase() { devops_mysql.OpenDatabase() } - -func logStackOnRecover(panicReason interface{}, httpWriter http.ResponseWriter) { - var buffer bytes.Buffer - buffer.WriteString(fmt.Sprintf("recover from panic situation: - %v\r\n", panicReason)) - for i := 2; ; i += 1 { - _, file, line, ok := goRuntime.Caller(i) - if !ok { - break - } - buffer.WriteString(fmt.Sprintf(" %s:%d\r\n", file, line)) - } - glog.Error(buffer.String()) - httpWriter.WriteHeader(http.StatusInternalServerError) - httpWriter.Write([]byte("recover from panic situation")) -} diff --git a/pkg/server/server.go b/pkg/server/server.go new file mode 100644 index 000000000..f79f7bd7d --- /dev/null +++ b/pkg/server/server.go @@ -0,0 +1,24 @@ +package server + +import ( + "bytes" + "fmt" + "github.com/golang/glog" + "net/http" + "runtime" +) + +func LogStackOnRecover(panicReason interface{}, httpWriter http.ResponseWriter) { + var buffer bytes.Buffer + buffer.WriteString(fmt.Sprintf("recover from panic situation: - %v\r\n", panicReason)) + for i := 2; ; i += 1 { + _, file, line, ok := runtime.Caller(i) + if !ok { + break + } + buffer.WriteString(fmt.Sprintf(" %s:%d\r\n", file, line)) + } + glog.Error(buffer.String()) + httpWriter.WriteHeader(http.StatusInternalServerError) + httpWriter.Write([]byte("recover from panic situation")) +}