@@ -23,35 +23,39 @@ import (
2323
2424func (s * DriverServer ) Start (_ * emptypb.Empty , stream pb.Driver_StartServer ) error {
2525 s .logger .Debug ("Received Start request" )
26- errChan , err := s .driver .Start (stream . Context ())
26+ errChan , err := s .driver .Start (context . Background ())
2727 if err != nil {
2828 s .logger .Errorf ("Start failed: %v" , err )
2929 return status .Errorf (codes .Internal , "failed to start driver: %v" , err )
3030 }
3131
32- for {
33- select {
34- case err , ok := <- errChan :
35- if ! ok {
36- s .logger .Debug ("Start error channel closed" )
37- if err := stream .Send (& pb.StartResponse {Success : true }); err != nil {
38- s .logger .Errorf ("Failed to send success response: %v" , err )
39- return status .Errorf (codes .Internal , "failed to send success response: %v" , err )
32+ go func () {
33+ for {
34+ select {
35+ case err , ok := <- errChan :
36+ if ! ok {
37+ s .logger .Debug ("Start error channel closed" )
38+ if err := stream .Send (& pb.StartResponse {Success : true }); err != nil {
39+ s .logger .Errorf ("Failed to send success response: %v" , err )
40+ return
41+ }
42+ return
4043 }
41- return nil
42- }
43- if err != nil {
44- s .logger .Errorf ("Error during Start: %v" , err )
45- if err := stream .Send (& pb.StartResponse {Error : err .Error (), Success : false }); err != nil {
46- s .logger .Errorf ("Failed to send error response: %v" , err )
47- return status .Errorf (codes .Internal , "failed to send error response: %v" , err )
44+ if err != nil {
45+ s .logger .Errorf ("Error during Start: %v" , err )
46+ if err := stream .Send (& pb.StartResponse {Error : err .Error (), Success : false }); err != nil {
47+ s .logger .Errorf ("Failed to send error response: %v" , err )
48+ return
49+ }
4850 }
51+ case <- stream .Context ().Done ():
52+ s .logger .Debug ("Stream context done, stopping Start" )
53+ return
4954 }
50- case <- stream .Context ().Done ():
51- s .logger .Debug ("Stream context done, stopping Start" )
52- return nil
5355 }
54- }
56+ }()
57+
58+ return nil
5559}
5660
5761func (s * DriverServer ) Configure (_ context.Context , req * pb.SetConfigRequest ) (* emptypb.Empty , error ) {
0 commit comments