forked from lobo/lambda-zig
		
	add wait loop in invoke to make sure the update has been processed
This commit is contained in:
		
							parent
							
								
									91149957b5
								
							
						
					
					
						commit
						a7c72d5ad2
					
				
					 1 changed files with 27 additions and 0 deletions
				
			
		|  | @ -52,6 +52,33 @@ fn make(step: *std.Build.Step, node: std.Progress.Node) anyerror!void { | ||||||
|         .client = client, |         .client = client, | ||||||
|         .region = try self.options.region.region(), |         .region = try self.options.region.region(), | ||||||
|     }; |     }; | ||||||
|  |     var inx: usize = 10; // 200ms * 10 | ||||||
|  |     while (inx > 0) : (inx -= 1) { | ||||||
|  |         var diagnostics = aws.Diagnostics{ | ||||||
|  |             .http_code = undefined, | ||||||
|  |             .response_body = undefined, | ||||||
|  |             .allocator = self.step.owner.allocator, | ||||||
|  |         }; | ||||||
|  |         const call = aws.Request(services.lambda.get_function).call(.{ | ||||||
|  |             .function_name = self.options.name, | ||||||
|  |         }, options) catch |e| { | ||||||
|  |             // There seems an issue here, but realistically, we have an arena | ||||||
|  |             // so there's no leak leaving this out | ||||||
|  |             defer diagnostics.deinit(); | ||||||
|  |             if (diagnostics.http_code == 404) continue; // function was just created...it's ok | ||||||
|  |             return step.fail( | ||||||
|  |                 "Unknown error {} from Lambda GetFunction. HTTP code {}, message: {s}", | ||||||
|  |                 .{ e, diagnostics.http_code, diagnostics.response_body }, | ||||||
|  |             ); | ||||||
|  |         }; | ||||||
|  |         defer call.deinit(); | ||||||
|  |         if (!std.mem.eql(u8, "InProgress", call.response.configuration.?.last_update_status.?)) | ||||||
|  |             break; // We're ready to invoke! | ||||||
|  |         const ms: usize = if (inx == 5) 500 else 50; | ||||||
|  |         std.time.sleep(ms * std.time.ns_per_ms); | ||||||
|  |     } | ||||||
|  |     if (inx == 0) | ||||||
|  |         return step.fail("Timed out waiting for lambda to update function", .{}); | ||||||
|     const call = try aws.Request(services.lambda.invoke).call(.{ |     const call = try aws.Request(services.lambda.invoke).call(.{ | ||||||
|         .function_name = self.options.name, |         .function_name = self.options.name, | ||||||
|         .payload = self.options.payload, |         .payload = self.options.payload, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue