@@ -48,12 +48,31 @@ export class Waiter {
4848 this . task . setOutputVariable ( "server_task_results" , JSON . stringify ( waitExecutionResults ) ) ;
4949
5050 } catch ( error ) {
51- if ( error instanceof Error && error . message . includes ( "Timeout reached" ) && error . message . includes ( "cancelled" ) ) {
52- this . task . setFailure ( error . message ) ;
51+ if ( error instanceof Error ) {
52+ if ( error . message . includes ( "Timeout reached" ) && error . message . includes ( "cancelled" ) ) {
53+ this . task . setFailure ( error . message ) ;
54+ this . task . setOutputVariable ( "completed_successfully" , "false" ) ;
55+ return ;
56+ }
57+
58+ if ( error . message . includes ( "Failed to connect to Octopus server after" ) ) {
59+ this . task . setFailure (
60+ `${ error . message } \n\n` +
61+ `This indicates repeated network failures. You can:\n` +
62+ `- Check network connectivity between ADO agent and Octopus server\n` +
63+ `- Increase MaxRetries or RetryBackoffSeconds parameters\n` +
64+ `- Check Octopus server health and logs`
65+ ) ;
66+ } else if ( error . message . includes ( "Unknown task Id" ) ) {
67+ this . task . setFailure ( error . message ) ;
68+ } else {
69+ this . task . setFailure ( `Failed to wait for tasks: ${ error . message } ` ) ;
70+ }
71+
5372 this . task . setOutputVariable ( "completed_successfully" , "false" ) ;
5473 return ;
5574 }
56-
75+
5776 this . task . setFailure ( `Failed to wait for tasks: ${ error } ` ) ;
5877 this . task . setOutputVariable ( "completed_successfully" , "false" ) ;
5978 }
@@ -71,7 +90,10 @@ export class Waiter {
7190 }
7291
7392 async waitWithoutProgress ( client : Client , inputParameters : InputParameters ) : Promise < WaitExecutionResult [ ] > {
74- const waiter = new ServerTaskWaiter ( client , inputParameters . space ) ;
93+ const waiter = new ServerTaskWaiter ( client , inputParameters . space , {
94+ maxRetries : inputParameters . maxRetries ,
95+ retryBackoffMs : inputParameters . retryBackoffSeconds * 1000 ,
96+ } ) ;
7597 const taskIds = inputParameters . tasks . map ( ( t ) => t . serverTaskId ) ;
7698 const lookup = new Map ( inputParameters . tasks . map ( ( t ) => [ t . serverTaskId , t ] ) ) ;
7799
@@ -97,7 +119,10 @@ export class Waiter {
97119 }
98120
99121 async waitWithProgress ( client : Client , inputParameters : InputParameters ) : Promise < WaitExecutionResult [ ] > {
100- const waiter = new ServerTaskWaiter ( client , inputParameters . space ) ;
122+ const waiter = new ServerTaskWaiter ( client , inputParameters . space , {
123+ maxRetries : inputParameters . maxRetries ,
124+ retryBackoffMs : inputParameters . retryBackoffSeconds * 1000 ,
125+ } ) ;
101126 const taskIds = inputParameters . tasks . map ( ( t ) => t . serverTaskId ) ;
102127 const taskLookup = new Map ( inputParameters . tasks . map ( ( t ) => [ t . serverTaskId , t ] ) ) ;
103128
0 commit comments