File tree Expand file tree Collapse file tree 1 file changed +13
-7
lines changed
Expand file tree Collapse file tree 1 file changed +13
-7
lines changed Original file line number Diff line number Diff line change 55 "fmt"
66 "os"
77 "os/signal"
8+ "runtime/debug"
89 "syscall"
910
1011 "github.com/cybertec-postgresql/pg_timetable/internal/api"
@@ -43,6 +44,7 @@ const (
4344 ExitCodeUpgradeError
4445 ExitCodeUserCancel
4546 ExitCodeShutdownCommand
47+ ExitCodeFatalError
4648)
4749
4850var exitCode = ExitCodeOK
@@ -65,12 +67,6 @@ func printVersion() {
6567}
6668
6769func main () {
68- defer func () { os .Exit (exitCode ) }()
69-
70- ctx , cancel := context .WithCancel (context .Background ())
71- SetupCloseHandler (cancel )
72- defer cancel ()
73-
7470 cmdOpts , err := config .NewConfig (os .Stdout )
7571 if err != nil {
7672 if cmdOpts != nil && cmdOpts .VersionOnly () {
@@ -81,12 +77,22 @@ func main() {
8177 exitCode = ExitCodeConfigError
8278 return
8379 }
84-
8580 if cmdOpts .Version {
8681 printVersion ()
8782 }
8883
8984 logger := log .Init (cmdOpts .Logging )
85+ ctx , cancel := context .WithCancel (context .Background ())
86+ SetupCloseHandler (cancel )
87+ defer func () {
88+ cancel ()
89+ if err := recover (); err != nil {
90+ exitCode = ExitCodeFatalError
91+ logger .WithField ("callstack" , string (debug .Stack ())).Error (err )
92+ }
93+ os .Exit (exitCode )
94+ }()
95+
9096 apiserver := api .Init (cmdOpts .RESTApi , logger )
9197
9298 if pge , err = pgengine .New (ctx , * cmdOpts , logger ); err != nil {
You can’t perform that action at this time.
0 commit comments