Skip to content

Commit 4f4693e

Browse files
committed
fix: check lambda Function latest status in sdkupdate
This change ensures the Lambda Function does not get stuck in `pending`. This issue occurs because we check the desired Status, which is not in sync with the latest Status in AWS.
1 parent 488d7fd commit 4f4693e

File tree

4 files changed

+21
-18
lines changed

4 files changed

+21
-18
lines changed

apis/v1alpha1/ack-generate-metadata.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
ack_generate_info:
2-
build_date: "2025-05-13T05:08:46Z"
3-
build_hash: 55bf57b2806c33a7fcd074be403f26ce3f8e58db
4-
go_version: go1.24.2
5-
version: v0.46.2
2+
build_date: "2025-05-22T20:38:43Z"
3+
build_hash: ed3e8afd0209bee26809ca6d6a72b1a8e3e05ede
4+
go_version: go1.24.3
5+
version: v0.46.2-5-ged3e8af
66
api_directory_checksum: e0465b8e0cf7076ab51e30604f13a32cdf4957ae
77
api_version: v1alpha1
88
aws_sdk_go_version: v1.32.6

pkg/resource/function/hooks.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,36 +69,38 @@ func (rm *resourceManager) customUpdateFunction(
6969
exit := rlog.Trace("rm.customUpdateFunction")
7070
defer exit(err)
7171

72-
if isFunctionPending(desired) {
73-
return nil, requeueWaitWhilePending
72+
updatedStatusResource := rm.concreteResource(desired.DeepCopy())
73+
updatedStatusResource.SetStatus(latest)
74+
if isFunctionPending(latest) {
75+
return updatedStatusResource, requeueWaitWhilePending
7476
}
7577

7678
if delta.DifferentAt("Spec.Tags") {
7779
err = rm.updateFunctionTags(ctx, latest, desired)
7880
if err != nil {
79-
return nil, err
81+
return updatedStatusResource, err
8082
}
8183
}
8284
if delta.DifferentAt("Spec.ReservedConcurrentExecutions") {
8385
err = rm.updateFunctionConcurrency(ctx, desired)
8486
if err != nil {
85-
return nil, err
87+
return updatedStatusResource, err
8688
}
8789
}
8890
if delta.DifferentAt("Spec.FunctionEventInvokeConfig") {
8991
err = rm.syncFunctionEventInvokeConfig(ctx, desired)
9092
if err != nil {
91-
return nil, err
93+
return updatedStatusResource, err
9294
}
9395
}
9496
if delta.DifferentAt("Spec.CodeSigningConfigARN") {
9597
if desired.ko.Spec.PackageType != nil && *desired.ko.Spec.PackageType == "Image" &&
9698
desired.ko.Spec.CodeSigningConfigARN != nil && *desired.ko.Spec.CodeSigningConfigARN != "" {
97-
return nil, ackerr.NewTerminalError(ErrCannotSetFunctionCSC)
99+
return updatedStatusResource, ackerr.NewTerminalError(ErrCannotSetFunctionCSC)
98100
} else {
99101
err = rm.updateFunctionCodeSigningConfig(ctx, desired)
100102
if err != nil {
101-
return nil, err
103+
return updatedStatusResource, err
102104
}
103105
}
104106
}
@@ -112,9 +114,9 @@ func (rm *resourceManager) customUpdateFunction(
112114
err = rm.updateFunctionCode(ctx, desired, delta, latest)
113115
if err != nil {
114116
if strings.Contains(err.Error(), "Provide a valid source image.") {
115-
return nil, requeueWaitWhileSourceImageDoesNotExist
117+
return updatedStatusResource, requeueWaitWhileSourceImageDoesNotExist
116118
} else {
117-
return nil, err
119+
return updatedStatusResource, err
118120
}
119121
}
120122
case delta.DifferentExcept(
@@ -125,13 +127,13 @@ func (rm *resourceManager) customUpdateFunction(
125127
"Spec.CodeSigningConfigARN"):
126128
err = rm.updateFunctionConfiguration(ctx, desired, delta)
127129
if err != nil {
128-
return nil, err
130+
return updatedStatusResource, err
129131
}
130132
}
131133

132134
readOneLatest, err := rm.ReadOne(ctx, desired)
133135
if err != nil {
134-
return nil, err
136+
return updatedStatusResource, err
135137
}
136138
return rm.concreteResource(readOneLatest), nil
137139
}

pkg/resource/function/sdk.go

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/hooks/function/sdk_read_one_post_set_output.go.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,5 @@
5151
ko.Spec.Tags = expectedOutput
5252
}
5353
if err := rm.setResourceAdditionalFields(ctx, ko); err != nil {
54-
return nil, err
55-
}
54+
return &resource{ko}, err
55+
}

0 commit comments

Comments
 (0)