diff --git a/go.mod b/go.mod index f5a3492..9d3d67a 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( github.com/uptrace/bun/driver/sqliteshim v1.1.17 github.com/uptrace/bun/extra/bundebug v1.1.17 github.com/urfave/cli/v2 v2.27.1 + golang.org/x/sync v0.6.0 ) require ( diff --git a/go.sum b/go.sum index 7b0419e..a2dd1c9 100644 --- a/go.sum +++ b/go.sum @@ -240,8 +240,8 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/internal/app/service_village.go b/internal/app/service_village.go index c6e0f75..1f0b3da 100644 --- a/internal/app/service_village.go +++ b/internal/app/service_village.go @@ -5,6 +5,7 @@ import ( "fmt" "gitea.dwysokinski.me/twhelp/corev3/internal/domain" + "golang.org/x/sync/errgroup" ) type VillageRepository interface { @@ -36,12 +37,24 @@ func (svc *VillageService) Sync(ctx context.Context, serverSyncedPayload domain. return fmt.Errorf("%s: couldn't get villages: %w", serverKey, err) } - if err = svc.createOrUpdate(ctx, serverKey, villages); err != nil { - return fmt.Errorf("%s: couldn't create/update villages: %w", serverKey, err) - } + g, ctx := errgroup.WithContext(ctx) - if err = svc.delete(ctx, serverKey, villages); err != nil { - return fmt.Errorf("%s: couldn't delete villages: %w", serverKey, err) + g.Go(func() error { + if createOrUpdateErr := svc.createOrUpdate(ctx, serverKey, villages); createOrUpdateErr != nil { + return fmt.Errorf("couldn't create/update villages: %w", createOrUpdateErr) + } + return nil + }) + + g.Go(func() error { + if deleteErr := svc.delete(ctx, serverKey, villages); deleteErr != nil { + return fmt.Errorf("couldn't delete villages: %w", deleteErr) + } + return nil + }) + + if err = g.Wait(); err != nil { + return fmt.Errorf("%s: %w", serverKey, err) } villagesSyncedPayload, err := domain.NewVillagesSyncedEventPayloadFromVillages( diff --git a/k8s/base/api.yml b/k8s/base/api.yml index 9470cd2..febc5b3 100644 --- a/k8s/base/api.yml +++ b/k8s/base/api.yml @@ -28,6 +28,10 @@ spec: secretKeyRef: name: twhelp-secret key: db-connection-string + - name: DB_MAX_OPEN_CONNS + value: "10" + - name: DB_MAX_IDLE_CONNS + value: "5" - name: RABBITMQ_CONNECTION_STRING valueFrom: secretKeyRef: diff --git a/k8s/base/ennoblement-consumer.yml b/k8s/base/ennoblement-consumer.yml index 425b774..689eb6b 100644 --- a/k8s/base/ennoblement-consumer.yml +++ b/k8s/base/ennoblement-consumer.yml @@ -25,6 +25,10 @@ spec: secretKeyRef: name: twhelp-secret key: db-connection-string + - name: DB_MAX_OPEN_CONNS + value: "5" + - name: DB_MAX_IDLE_CONNS + value: "2" - name: RABBITMQ_CONNECTION_STRING valueFrom: secretKeyRef: diff --git a/k8s/base/player-consumer.yml b/k8s/base/player-consumer.yml index 0009f97..4040ac8 100644 --- a/k8s/base/player-consumer.yml +++ b/k8s/base/player-consumer.yml @@ -25,6 +25,10 @@ spec: secretKeyRef: name: twhelp-secret key: db-connection-string + - name: DB_MAX_OPEN_CONNS + value: "5" + - name: DB_MAX_IDLE_CONNS + value: "2" - name: RABBITMQ_CONNECTION_STRING valueFrom: secretKeyRef: diff --git a/k8s/base/server-consumer.yml b/k8s/base/server-consumer.yml index 4587103..85047c4 100644 --- a/k8s/base/server-consumer.yml +++ b/k8s/base/server-consumer.yml @@ -25,6 +25,10 @@ spec: secretKeyRef: name: twhelp-secret key: db-connection-string + - name: DB_MAX_OPEN_CONNS + value: "5" + - name: DB_MAX_IDLE_CONNS + value: "2" - name: RABBITMQ_CONNECTION_STRING valueFrom: secretKeyRef: diff --git a/k8s/base/tribe-consumer.yml b/k8s/base/tribe-consumer.yml index 3fa10f1..2e31a02 100644 --- a/k8s/base/tribe-consumer.yml +++ b/k8s/base/tribe-consumer.yml @@ -25,6 +25,10 @@ spec: secretKeyRef: name: twhelp-secret key: db-connection-string + - name: DB_MAX_OPEN_CONNS + value: "5" + - name: DB_MAX_IDLE_CONNS + value: "2" - name: RABBITMQ_CONNECTION_STRING valueFrom: secretKeyRef: diff --git a/k8s/base/village-consumer.yml b/k8s/base/village-consumer.yml index 239bc11..9a4f879 100644 --- a/k8s/base/village-consumer.yml +++ b/k8s/base/village-consumer.yml @@ -25,6 +25,10 @@ spec: secretKeyRef: name: twhelp-secret key: db-connection-string + - name: DB_MAX_OPEN_CONNS + value: "5" + - name: DB_MAX_IDLE_CONNS + value: "2" - name: RABBITMQ_CONNECTION_STRING valueFrom: secretKeyRef: