Files
ark/server/internal/interface/grpc/interceptors/panic.go
Dusan Sekulic 07139786e6 IsInitialized > walletLoaded & panic recovery (#266)
* isInitialized update
update walletInitialized to return true is walled.db exist,
add walletLoaded that check if wallet property is nil

* panic handler
2024-08-19 18:57:52 +02:00

46 lines
1.0 KiB
Go

package interceptors
import (
"context"
"runtime/debug"
log "github.com/sirupsen/logrus"
"google.golang.org/grpc"
)
func unaryPanicRecoveryInterceptor() grpc.UnaryServerInterceptor {
return func(
ctx context.Context,
req interface{},
info *grpc.UnaryServerInfo,
handler grpc.UnaryHandler,
) (interface{}, error) {
defer func() {
if r := recover(); r != nil {
log.Errorf("panic-recovery middleware recovered from panic: %v", r)
log.Tracef("panic-recovery middleware recovered from panic: %v", string(debug.Stack()))
}
}()
return handler(ctx, req)
}
}
func streamPanicRecoveryInterceptor() grpc.StreamServerInterceptor {
return func(
srv interface{},
stream grpc.ServerStream,
info *grpc.StreamServerInfo,
handler grpc.StreamHandler,
) error {
defer func() {
if r := recover(); r != nil {
log.Errorf("panic-recovery middleware recovered from panic: %v", r)
log.Tracef("panic-recovery middleware recovered from panic: %v", string(debug.Stack()))
}
}()
return handler(srv, stream)
}
}