Skip to content

Commit dba5eae

Browse files
committed
fix: close defer in main
1 parent 8cd7998 commit dba5eae

1 file changed

Lines changed: 23 additions & 14 deletions

File tree

cmd/server/main.go

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package main
22

33
import (
44
"context"
5+
"errors"
6+
"fmt"
57
"log"
68
"net/http"
79
"os"
@@ -15,33 +17,40 @@ import (
1517
)
1618

1719
func main() {
20+
ctx := context.Background()
21+
if err := run(ctx); err != nil {
22+
fmt.Fprintf(os.Stderr, "%s\n", err)
23+
os.Exit(1)
24+
}
25+
}
26+
27+
func run(ctx context.Context) error {
1828
log.Println("Go version:", runtime.Version())
1929
log.Println("Go OS/Arch:", runtime.GOOS, runtime.GOARCH)
2030

2131
conf := config.New()
2232
srv, err := server.New(conf)
2333
if err != nil {
24-
log.Fatalf("server: %v\n", err)
34+
return fmt.Errorf("server initialization error: %w", err)
2535
}
2636

27-
done := make(chan os.Signal, 1)
28-
signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
29-
3037
go func() {
31-
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
32-
log.Fatalf("listen: %v\n", err)
38+
if err := srv.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) {
39+
log.Fatalf("server startup error: %v", err)
3340
}
41+
log.Println("stopped serving new connections.")
3442
}()
3543

36-
<-done
44+
sigChan := make(chan os.Signal, 1)
45+
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
46+
<-sigChan
3747

38-
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
39-
defer func() {
40-
// extra handling here, databases etc
41-
cancel()
42-
}()
48+
shutdownCtx, shutdownRelease := context.WithTimeout(ctx, 10*time.Second)
49+
defer shutdownRelease()
4350

44-
if err := srv.Shutdown(ctx); err != nil {
45-
log.Fatalf("Server Shutdown Failed:%+v", err)
51+
if err := srv.Shutdown(shutdownCtx); err != nil {
52+
return fmt.Errorf("server shutdown error: %w", err)
4653
}
54+
log.Println("server shutdown complete.")
55+
return nil
4756
}

0 commit comments

Comments
 (0)