Skip to content

Commit 2f9d8de

Browse files
committed
Add random delay to prevent collisions
1 parent 8d3a3cd commit 2f9d8de

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

api/pkg/services/phone_service.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package services
33
import (
44
"context"
55
"fmt"
6+
"math/rand"
67
"time"
78

89
"github.com/NdoleStudio/httpsms/pkg/events"
@@ -87,6 +88,11 @@ func (service *PhoneService) Upsert(ctx context.Context, params PhoneUpsertParam
8788

8889
ctxLogger := service.tracer.CtxLogger(service.logger, span)
8990

91+
// Add random delay 100ms max to prevent collisions
92+
randomizer := rand.New(rand.NewSource(time.Now().UnixNano()))
93+
delay := randomizer.Intn(10) * 10
94+
time.Sleep(time.Duration(delay) * time.Millisecond)
95+
9096
phone, err := service.repository.Load(ctx, params.UserID, phonenumbers.Format(&params.PhoneNumber, phonenumbers.E164))
9197
if stacktrace.GetCode(err) == repositories.ErrCodeNotFound {
9298
return service.createPhone(ctx, params)

0 commit comments

Comments
 (0)