@@ -24,9 +24,9 @@ type Node struct {
2424}
2525
2626// New creates a new Node with the provided context. 
27- func  New (ctx  context. Context ,  name  string ) * Node  {
27+ func  New (name  string ) * Node  {
2828	return  & Node {
29- 		Manager : process .NewManager (ctx ,  name ),
29+ 		Manager : process .NewManager (name ),
3030	}
3131}
3232
@@ -120,12 +120,13 @@ func (n *Node) UpdateDetails(ctx context.Context) error {
120120	}
121121
122122	log .Info ("Node details updated successfully" , "addr" , n .Context ().NodeAddr ())
123+ 
123124	return  nil 
124125}
125126
126127// Start initializes the Node's services, scheduler, and API server. 
127- func  (n  * Node ) Start ()  error  {
128- 	return  n .Manager .Start (func (ctx  context.Context ) error  {
128+ func  (n  * Node ) Start (parent  context. Context ) (context. Context ,  error )  {
129+ 	return  n .Manager .Start (parent ,  func (ctx  context.Context ) error  {
129130		if  err  :=  n .Register (ctx ); err  !=  nil  {
130131			return  fmt .Errorf ("registering node: %w" , err )
131132		}
@@ -134,29 +135,35 @@ func (n *Node) Start() error {
134135			return  fmt .Errorf ("updating details: %w" , err )
135136		}
136137
138+ 		var  (
139+ 			serviceCtx    context.Context 
140+ 			schedulerCtx  context.Context 
141+ 			serverCtx     context.Context 
142+ 		)
143+ 
137144		sg  :=  & errgroup.Group {}
138145
139- 		sg .Go (func () error  {
146+ 		sg .Go (func () ( err   error )  {
140147			log .Info ("Starting service" )
141- 			if  err  : =  n .Context ().Service ().Start (); err  !=  nil  {
148+ 			if  serviceCtx ,  err  =  n .Context ().Service ().Start (ctx ); err  !=  nil  {
142149				return  fmt .Errorf ("starting service: %w" , err )
143150			}
144151
145152			return  nil 
146153		})
147154
148- 		sg .Go (func () error  {
155+ 		sg .Go (func () ( err   error )  {
149156			log .Info ("Starting scheduler" )
150- 			if  err  : =  n .Scheduler ().Start (); err  !=  nil  {
157+ 			if  schedulerCtx ,  err  =  n .Scheduler ().Start (ctx ); err  !=  nil  {
151158				return  fmt .Errorf ("starting scheduler: %w" , err )
152159			}
153160
154161			return  nil 
155162		})
156163
157- 		sg .Go (func () error  {
164+ 		sg .Go (func () ( err   error )  {
158165			log .Info ("Starting API server" )
159- 			if  err  : =  n .Server ().Start (); err  !=  nil  {
166+ 			if  serverCtx ,  err  =  n .Server ().Start (ctx ); err  !=  nil  {
160167				return  fmt .Errorf ("starting API server: %w" , err )
161168			}
162169
@@ -167,24 +174,24 @@ func (n *Node) Start() error {
167174			return  err 
168175		}
169176
170- 		n .Go (func ( ctx  context. Context ) error  {
171- 			if  err  :=  n .Context ().Service ().Wait (); err  !=  nil  {
177+ 		n .Go (ctx ,  func ( ) error  {
178+ 			if  err  :=  n .Context ().Service ().Wait (serviceCtx ); err  !=  nil  {
172179				return  fmt .Errorf ("waiting service: %w" , err )
173180			}
174181
175182			return  nil 
176183		})
177184
178- 		n .Go (func ( ctx  context. Context ) error  {
179- 			if  err  :=  n .Scheduler ().Wait (); err  !=  nil  {
185+ 		n .Go (ctx ,  func ( ) error  {
186+ 			if  err  :=  n .Scheduler ().Wait (schedulerCtx ); err  !=  nil  {
180187				return  fmt .Errorf ("waiting scheduler: %w" , err )
181188			}
182189
183190			return  nil 
184191		})
185192
186- 		n .Go (func ( ctx  context. Context ) error  {
187- 			if  err  :=  n .Server ().Wait (); err  !=  nil  {
193+ 		n .Go (ctx ,  func ( ) error  {
194+ 			if  err  :=  n .Server ().Wait (serverCtx ); err  !=  nil  {
188195				return  fmt .Errorf ("waiting API server: %w" , err )
189196			}
190197
@@ -196,8 +203,8 @@ func (n *Node) Start() error {
196203}
197204
198205// Wait blocks until all background goroutines launched exit. 
199- func  (n  * Node ) Wait () error  {
200- 	return  n .Manager .Wait (nil )
206+ func  (n  * Node ) Wait (ctx  context. Context ) error  {
207+ 	return  n .Manager .Wait (ctx ,  nil )
201208}
202209
203210// Stop gracefully stops the Node's operations. 
0 commit comments