Skip to content

Commit 96d8c18

Browse files
committed
feat: imagex retry
1 parent bc6d9d2 commit 96d8c18

File tree

4 files changed

+48
-7
lines changed

4 files changed

+48
-7
lines changed

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.19
44

55
require (
66
cloud.google.com/go/security v1.8.0
7+
github.com/avast/retry-go/v4 v4.3.1
78
github.com/go-acme/lego/v4 v4.9.0
89
github.com/google/uuid v1.3.0
910
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.490

go.sum

+8-1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4
6363
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
6464
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
6565
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
66+
github.com/avast/retry-go/v4 v4.3.1 h1:Mtg11F9PdAIMkMiio2RKcYauoVHjl2aB3zQJJlzD4cE=
67+
github.com/avast/retry-go/v4 v4.3.1/go.mod h1:rg6XFaiuFYII0Xu3RDbZQkxCofFwruZKW8oEF1jpWiU=
6668
github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
6769
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
6870
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o=
@@ -414,13 +416,18 @@ github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1Sd
414416
github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
415417
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
416418
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
419+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
420+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
417421
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
418422
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
419423
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
420424
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
421425
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
422426
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
423-
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
427+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
428+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
429+
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
430+
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
424431
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.490 h1:mmz27tVi2r70JYnm5y0Zk8w0Qzsx+vfUw3oqSyrEfP8=
425432
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.490/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
426433
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.490 h1:g9SWTaTy/rEuhMErC2jWq9Qt5ci+jBYSvXnJsLq4adg=

handler/imagex.go

+38-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ import (
44
"fmt"
55
"log"
66
"strings"
7+
"time"
78

9+
"github.com/avast/retry-go/v4"
810
"github.com/go-acme/lego/v4/certificate"
911
"github.com/paraparty/acme-task/imagex"
1012
"github.com/paraparty/acme-task/model"
1113
volc "github.com/volcengine/volc-sdk-golang/base"
14+
volcImagex "github.com/volcengine/volc-sdk-golang/service/imagex"
1215
)
1316

1417
func ImageXHandler(task *model.Task, certificates *certificate.Resource) error {
@@ -23,16 +26,38 @@ func ImageXHandler(task *model.Task, certificates *certificate.Resource) error {
2326
SecretAccessKey: task.TaskDetails.Credential.SecretKey,
2427
})
2528

26-
addedCert, err := imagex.AddCert(imagexService, certificates)
29+
var addedCert *model.AddCertResponse
30+
err := retry.Do(func() error {
31+
var err error
32+
addedCert, err = imagex.AddCert(imagexService, certificates)
33+
if err != nil {
34+
return err
35+
}
36+
return nil
37+
}, retry.Attempts(3), retry.Delay(time.Second*5), retry.OnRetry(func(n uint, err error) {
38+
log.Printf("add cert error: retry:%d err:%+v", n, err)
39+
}))
2740
if err != nil {
2841
return err
2942
}
3043

31-
servicesInfo, err := imagexService.GetImageServices("")
44+
var servicesInfo *volcImagex.GetServicesResult
45+
err = retry.Do(func() error {
46+
var err error
47+
servicesInfo, err = imagexService.GetImageServices("")
48+
if err != nil {
49+
return err
50+
}
51+
return nil
52+
}, retry.Attempts(3), retry.OnRetry(func(n uint, err error) {
53+
log.Printf("get service info error: retry:%d err:%+v", n, err)
54+
}))
3255
if err != nil {
3356
return err
3457
}
3558

59+
time.Sleep(time.Second * 5)
60+
3661
for _, service := range servicesInfo.Services {
3762
log.Printf("now processing service %s(%s)", service.ServiceName, service.ServiceId)
3863

@@ -47,9 +72,17 @@ func ImageXHandler(task *model.Task, certificates *certificate.Resource) error {
4772
continue
4873
}
4974

50-
err := imagex.EnableServiceHttps(imagexService, service.ServiceId, domain.DomainName, addedCert.CertId)
51-
if err != nil {
52-
log.Printf("%v", err)
75+
setCertErr := retry.Do(func() error {
76+
retryErr := imagex.EnableServiceHttps(imagexService, service.ServiceId, domain.DomainName, addedCert.CertId)
77+
if retryErr != nil {
78+
return retryErr
79+
}
80+
return nil
81+
}, retry.Attempts(3), retry.Delay(time.Second*5), retry.OnRetry(func(n uint, err error) {
82+
log.Printf("set cert for %s(%s):%s retry:%d err:%+v", service.ServiceName, service.ServiceId, domain.DomainName, n, err)
83+
}))
84+
if setCertErr != nil {
85+
log.Printf("%v", setCertErr)
5386
continue
5487
}
5588

imagex/imagex.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func CreateImageXService() *imagex.ImageX {
3737
func AddCert(instance *imagex.ImageX, certificates *certificate.Resource) (*model.AddCertResponse, error) {
3838
certSuffix, _ := uuid.NewUUID()
3939
req := &model.AddCertRequest{
40-
Name: "auto-acme-task-" + time.Now().Format(time.RFC3339) + "-" + certSuffix.String(),
40+
Name: "auto-main-" + time.Now().Format(time.RFC3339) + "-" + certSuffix.String(),
4141
Public: string(certificates.Certificate),
4242
Private: string(certificates.PrivateKey),
4343
}

0 commit comments

Comments
 (0)