X-Git-Url: https://gerrit.onap.org/r/gitweb?p=demo.git;a=blobdiff_plain;f=vnfs%2FDAaaS%2Fmicroservices%2FGoApps%2Fsrc%2Fgo-hdfs-writer%2Fcmd%2Fhdfs-writer%2Fmain.go;h=4f3cfcbc2df17c7346b5351c8ad6ec6168b648e5;hp=a79a3e060d6d9d30459c70cdc6bbeed197eec48b;hb=68d118176bb53c36b31a7060cfa16ad5acac1765;hpb=68042495ef1e1e6dff7fed7fc2691b01cf672fe1 diff --git a/vnfs/DAaaS/microservices/GoApps/src/go-hdfs-writer/cmd/hdfs-writer/main.go b/vnfs/DAaaS/microservices/GoApps/src/go-hdfs-writer/cmd/hdfs-writer/main.go index a79a3e06..4f3cfcbc 100644 --- a/vnfs/DAaaS/microservices/GoApps/src/go-hdfs-writer/cmd/hdfs-writer/main.go +++ b/vnfs/DAaaS/microservices/GoApps/src/go-hdfs-writer/cmd/hdfs-writer/main.go @@ -6,9 +6,9 @@ import ( "net/http" "os" "os/signal" - "time" handler "hdfs-writer/pkg/handler" + pipeline "hdfs-writer/pkg/pipeline" utils "hdfs-writer/pkg/utils" ) @@ -22,23 +22,24 @@ func main() { Addr: ":9393", } - connectionsClose := make(chan struct{}) + connectionsClose := make(chan bool) go func() { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) <-c // function literal waiting to receive Interrupt signal fmt.Printf(":::Got the kill signal:::") slogger.Info(":::Got the kill signal:::") - for eachWriter, eachChannel := range handler.ChannelMap { + for eachWriter, eachChannel := range pipeline.ChannelMap { + slogger.Info("Begin:: Closing writer goroutines::") slogger.Infof("Closing writer goroutine :: %s", eachWriter) - slogger.Infof("eachChannel:: %v", eachChannel) - close(eachChannel) - // This wait time ensures that the each of the channel is killed before - // main routine finishes. - time.Sleep(time.Second * 5) + delete(pipeline.ChannelMap, eachWriter) + eachChannel <- true } - //once all goroutines are signalled, send close to main thread + httpServer.Shutdown(context.Background()) + /*once all goroutines are signalled and httpServer is shutdown, + send close to main thread */ + connectionsClose <- true close(connectionsClose) }() @@ -47,5 +48,6 @@ func main() { if err != nil && err != http.ErrServerClosed { slogger.Fatal(err) } + pipeline.Wg.Wait() <-connectionsClose //main thread waiting to receive close signal }