@@ -28,6 +28,8 @@ const (
2828 duplicateConnectionSleepDuration = 15 * time .Second
2929)
3030
31+ var buildAbortMap = make (map [string ]bool )
32+
3133type synapse struct {
3234 conn * websocket.Conn
3335 runner core.DockerRunner
@@ -46,7 +48,6 @@ func New(
4648 logger lumber.Logger ,
4749 secretsManager core.SecretsManager ,
4850) core.SynapseManager {
49-
5051 return & synapse {
5152 runner : runner ,
5253 logger : logger ,
@@ -215,6 +216,9 @@ func (s *synapse) processMessage(msg []byte, duplicateConnectionChan chan struct
215216 case core .MsgTask :
216217 s .logger .Debugf ("task message received from server" )
217218 go s .processTask (message )
219+ case core .MsgBuildAbort :
220+ s .logger .Debugf ("abort-build message received from server" )
221+ go s .processAbortBuild (message )
218222 default :
219223 s .logger .Errorf ("message type not found" )
220224 }
@@ -232,6 +236,17 @@ func (s *synapse) processErrorMessage(message core.Message, duplicateConnectionC
232236 }
233237}
234238
239+ // processAbortBuild handles aborting a running build
240+ func (s * synapse ) processAbortBuild (message core.Message ) {
241+ buildID := string (message .Content )
242+ buildAbortMap [buildID ] = true
243+ s .logger .Debugf ("message received to abort build %s" , buildID )
244+ if err := s .runner .KillContainerForBuildID (buildID ); err != nil {
245+ s .logger .Errorf ("error while terminating container for buildID: %s, error: %v" , buildID , err )
246+ return
247+ }
248+ }
249+
235250// processTask handles task type message
236251func (s * synapse ) processTask (message core.Message ) {
237252 var runnerOpts core.RunnerOptions
@@ -270,6 +285,9 @@ func (s *synapse) runAndUpdateJobStatus(runnerOpts *core.RunnerOptions) {
270285 if status .Done {
271286 jobStatus = core .JobCompleted
272287 }
288+ if buildAbortMap [runnerOpts.Label [BuildID ]] {
289+ jobStatus = core .JobAborted
290+ }
273291 jobInfo := CreateJobInfo (jobStatus , runnerOpts , status .Error .Message )
274292 s .logger .Infof ("Sending update to neuron %+v" , jobInfo )
275293 resourceStatsMessage := CreateJobUpdateMessage (jobInfo )
0 commit comments