Skip to content

Commit 616fcf2

Browse files
committed
feat: do not resolve customer for entitlements on each query
A balance check resolves 5-10 times the customer. It's a heavy operation so let's not resolve it that many times.
1 parent 05198e7 commit 616fcf2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+525
-312
lines changed

app/common/customer.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
customerservice "github.com/openmeterio/openmeter/openmeter/customer/service"
1515
customerservicehooks "github.com/openmeterio/openmeter/openmeter/customer/service/hooks"
1616
entdb "github.com/openmeterio/openmeter/openmeter/ent/db"
17-
entitlementvalidator "github.com/openmeterio/openmeter/openmeter/entitlement/validators/customer"
1817
"github.com/openmeterio/openmeter/openmeter/registry"
1918
"github.com/openmeterio/openmeter/openmeter/subject"
2019
"github.com/openmeterio/openmeter/openmeter/watermill/eventbus"
@@ -27,7 +26,6 @@ var Customer = wire.NewSet(
2726
func NewCustomerService(
2827
logger *slog.Logger,
2928
db *entdb.Client,
30-
entRegistry *registry.Entitlement,
3129
eventPublisher eventbus.Publisher,
3230
) (customer.Service, error) {
3331
customerAdapter, err := customeradapter.New(customeradapter.Config{
@@ -46,14 +44,6 @@ func NewCustomerService(
4644
return nil, fmt.Errorf("failed to create customer service: %w", err)
4745
}
4846

49-
// Create and register the entitlement validator
50-
validator, err := entitlementvalidator.NewValidator(entRegistry.EntitlementRepo)
51-
if err != nil {
52-
return nil, fmt.Errorf("failed to create entitlement validator: %w", err)
53-
}
54-
55-
service.RegisterRequestValidator(validator)
56-
5747
return service, nil
5848
}
5949

app/common/entitlement.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package common
22

33
import (
4+
"fmt"
45
"log/slog"
56

67
"github.com/google/wire"
78
"go.opentelemetry.io/otel/trace"
89

910
"github.com/openmeterio/openmeter/app/config"
11+
"github.com/openmeterio/openmeter/openmeter/customer"
1012
entdb "github.com/openmeterio/openmeter/openmeter/ent/db"
13+
entitlementvalidator "github.com/openmeterio/openmeter/openmeter/entitlement/validators/customer"
1114
"github.com/openmeterio/openmeter/openmeter/meter"
1215
"github.com/openmeterio/openmeter/openmeter/registry"
1316
registrybuilder "github.com/openmeterio/openmeter/openmeter/registry/builder"
@@ -29,15 +32,27 @@ func NewEntitlementRegistry(
2932
meterService meter.Service,
3033
eventPublisher eventbus.Publisher,
3134
locker *lockr.Locker,
32-
) *registry.Entitlement {
33-
return registrybuilder.GetEntitlementRegistry(registrybuilder.EntitlementOptions{
35+
customerService customer.Service,
36+
) (*registry.Entitlement, error) {
37+
entRegistry := registrybuilder.GetEntitlementRegistry(registrybuilder.EntitlementOptions{
3438
DatabaseClient: db,
3539
StreamingConnector: streamingConnector,
3640
MeterService: meterService,
41+
CustomerService: customerService,
3742
Logger: logger,
3843
Publisher: eventPublisher,
3944
EntitlementsConfiguration: entitlementConfig,
4045
Tracer: tracer,
4146
Locker: locker,
4247
})
48+
49+
// Create and register the entitlement validator
50+
validator, err := entitlementvalidator.NewValidator(entRegistry.EntitlementRepo)
51+
if err != nil {
52+
return nil, fmt.Errorf("failed to create entitlement validator: %w", err)
53+
}
54+
55+
customerService.RegisterRequestValidator(validator)
56+
57+
return entRegistry, nil
4358
}

cmd/balance-worker/wire_gen.go

Lines changed: 22 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/billing-worker/wire_gen.go

Lines changed: 23 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/jobs/internal/wire_gen.go

Lines changed: 29 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)