Skip to content

Commit 80cd439

Browse files
committed
update test for 409 retry
1 parent 2895d61 commit 80cd439

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

oci/database_database_resource.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"context"
88
"errors"
99
"fmt"
10+
"log"
11+
"strconv"
1012
"strings"
1113
"time"
1214

@@ -1176,8 +1178,13 @@ func getdatabaseRetryDurationFunction(retryTimeout time.Duration) expectedRetryD
11761178
if response.Response == nil || response.Response.HTTPResponse() == nil {
11771179
return defaultRetryTime
11781180
}
1181+
e := response.Error
11791182
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
11801183
case 409:
1184+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
1185+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
1186+
return 0
1187+
}
11811188
if e := response.Error; e != nil {
11821189
if strings.Contains(e.Error(), "IncorrectState") {
11831190
defaultRetryTime = retryTimeout

oci/database_db_home_resource.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"context"
88
"fmt"
99
"log"
10+
"strconv"
1011
"strings"
1112
"time"
1213

@@ -1402,8 +1403,13 @@ func getDbHomeRetryDurationFunction(retryTimeout time.Duration) expectedRetryDur
14021403
if response.Response == nil || response.Response.HTTPResponse() == nil {
14031404
return defaultRetryTime
14041405
}
1406+
e := response.Error
14051407
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
14061408
case 409:
1409+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
1410+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
1411+
return 0
1412+
}
14071413
if e := response.Error; e != nil {
14081414
if strings.Contains(e.Error(), "IncorrectState") {
14091415
defaultRetryTime = retryTimeout

oci/helpers_core.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ package oci
55

66
import (
77
"context"
8+
"log"
89
"net"
10+
"strconv"
911
"strings"
1012
"time"
1113

@@ -164,12 +166,17 @@ func getSubnetExpectedRetryDuration(response oci_common.OCIOperationResponse, di
164166
if response.Response == nil || response.Response.HTTPResponse() == nil {
165167
return defaultRetryTime
166168
}
169+
e := response.Error
167170
if len(optionals) > 0 {
168171
if key, ok := optionals[0].(string); ok {
169172
switch key {
170173
case deleteResource:
171174
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
172175
case 409:
176+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
177+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
178+
return 0
179+
}
173180
if e := response.Error; e != nil {
174181
if strings.Contains(e.Error(), "Conflict") {
175182
defaultRetryTime = longRetryTime

oci/helpers_waas.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package oci
55

66
import (
7+
"log"
8+
"strconv"
79
"strings"
810
"time"
911

@@ -36,12 +38,17 @@ func getWaasCertificateExpectedRetryDuration(response oci_common.OCIOperationRes
3638
if response.Response == nil || response.Response.HTTPResponse() == nil {
3739
return defaultRetryTime
3840
}
41+
e := response.Error
3942
if len(optionals) > 0 {
4043
if key, ok := optionals[0].(string); ok {
4144
switch key {
4245
case deleteResource:
4346
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
4447
case 409:
48+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
49+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
50+
return 0
51+
}
4552
if e := response.Error; e != nil && strings.Contains(e.Error(), "IncorrectState") {
4653
defaultRetryTime = waasDeleteConflictRetryDuration
4754
}

oci/retry.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"log"
99
"math/rand"
10+
"strconv"
1011
"strings"
1112
"time"
1213

@@ -139,6 +140,10 @@ func getDefaultExpectedRetryDuration(response oci_common.OCIOperationResponse, d
139140
case 404:
140141
return 0
141142
case 409:
143+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
144+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
145+
return 0
146+
}
142147
if e != nil && (strings.Contains(e.Error(), "InvalidatedRetryToken") ||
143148
strings.Contains(e.Error(), "BucketNotEmpty")) {
144149
return 0
@@ -213,6 +218,7 @@ func getIdentityExpectedRetryDuration(response oci_common.OCIOperationResponse,
213218
if response.Response == nil || response.Response.HTTPResponse() == nil {
214219
return defaultRetryTime
215220
}
221+
e := response.Error
216222
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
217223
case 404:
218224
return 0
@@ -226,6 +232,10 @@ func getIdentityExpectedRetryDuration(response oci_common.OCIOperationResponse,
226232
defaultRetryTime = longRetryTime
227233
}
228234
}
235+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
236+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
237+
return 0
238+
}
229239
}
230240
return defaultRetryTime
231241
}
@@ -244,8 +254,13 @@ func getDatabaseExpectedRetryDuration(response oci_common.OCIOperationResponse,
244254
if response.Response == nil || response.Response.HTTPResponse() == nil {
245255
return defaultRetryTime
246256
}
257+
e := response.Error
247258
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
248259
case 409:
260+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
261+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
262+
return 0
263+
}
249264
if e := response.Error; e != nil {
250265
if strings.Contains(e.Error(), "InvalidatedRetryToken") {
251266
defaultRetryTime = 0
@@ -271,6 +286,7 @@ func getObjectstorageServiceExpectedRetryDuration(response oci_common.OCIOperati
271286
if response.Response == nil || response.Response.HTTPResponse() == nil {
272287
return defaultRetryTime
273288
}
289+
e := response.Error
274290
switch statusCode := response.Response.HTTPResponse().StatusCode; statusCode {
275291
case 404:
276292
return 0
@@ -280,6 +296,10 @@ func getObjectstorageServiceExpectedRetryDuration(response oci_common.OCIOperati
280296
defaultRetryTime = longRetryTime
281297
}
282298
}
299+
if isDisable409Retry, _ := strconv.ParseBool(getEnvSettingWithDefault("disable_409_retry", "false")); isDisable409Retry {
300+
log.Printf("[ERROR] Resource is in conflict state due to multiple update request: %v", e.Error())
301+
return 0
302+
}
283303
case 500:
284304
if configuredRetryDuration != nil {
285305
defaultRetryTime = *configuredRetryDuration

0 commit comments

Comments
 (0)