Improve shutdown sequence
This commit is contained in:
		
							
								
								
									
										15
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								main.go
									
									
									
									
									
								
							@@ -191,12 +191,8 @@ func main() {
 | 
			
		||||
	server := &http.Server{Addr: listenAddr}
 | 
			
		||||
 | 
			
		||||
	// Run the producer
 | 
			
		||||
	go func() {
 | 
			
		||||
		if err := server.ListenAndServe(); err != nil &&
 | 
			
		||||
			err != http.ErrServerClosed {
 | 
			
		||||
			log.Fatalln(err)
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	errs := make(chan error, 1)
 | 
			
		||||
	go func() { errs <- server.ListenAndServe() }()
 | 
			
		||||
 | 
			
		||||
	// Run the consumer
 | 
			
		||||
	ctx, ctxCancel := context.WithCancel(context.Background())
 | 
			
		||||
@@ -217,7 +213,12 @@ func main() {
 | 
			
		||||
	// Wait for a termination signal
 | 
			
		||||
	sigs := make(chan os.Signal, 1)
 | 
			
		||||
	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
 | 
			
		||||
	<-sigs
 | 
			
		||||
 | 
			
		||||
	select {
 | 
			
		||||
	case <-sigs:
 | 
			
		||||
	case err := <-errs:
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Stop the producer gracefully
 | 
			
		||||
	ctxSd, ctxSdCancel := context.WithTimeout(context.Background(), 5)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user