Skip to content

Commit 474d722

Browse files
authored
Dev (#92)
* feat: moved caching logic to own implementation sub package. * chore: applied goimports * test: added more tests for cache package * feat: updated minimum value of cache ttl settings Minimum value of CacheTTL in Services.{Users,Profiles,Checks} have been updated from 0 to 1 to avoid creating caches with no TTL. * feat: Configuration parameter change for caches Removed configuration parameter Services.{Checks,Users,Profiles}.CacheTTL and replaced with Service.{Checks,Users,Profiles}.Cache. New Configuration struct called CacheConfig with members TTL and CleanupInterval. TTL member is the replacement of deleted CacheTTL. CleanupInterval is net new. Both are of type time.Duration. The ConfigProvider library supports passing inputs through time.ParseDuration allowing for config values such as "1s" and "10ms". * chore: removed unused code * chore: added otel collector, prometheus and grafana to local dev setup * test: added more tests * feat: cache no longer extends expiry when setting a value * cache migrated to new package with 100% coverage * updated renovate config to allow automerging * format code
1 parent e8a3148 commit 474d722

26 files changed

+2109
-544
lines changed

.idea/copyright/Sophrosyne.xml

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.mise.toml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ protoc-gen-go = "1.34.1"
1111
protoc-gen-go-grpc = "1.3.0"
1212
node = "22.2.0"
1313
"go:github.com/goreleaser/goreleaser" = "1.26.1"
14+
"go:golang.org/x/pkgsite/cmd/pkgsite" = "latest"
1415

1516
[settings]
1617
experimental = true

.mise/tasks/dev/format

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,5 @@ if test "$check" = 0; then
4444
exit 0
4545
fi
4646
else
47-
goimports -w -local github.com/madsrc/sophrosyne -e .
47+
goimports -w -local github.com/madsrc/sophrosyne -e $(find . -name "*.go" | grep -v "\./build\|\./internal/mocks\|.*\.pb\.go")
4848
fi

.mise/tasks/dev/run

+1
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@ SOPH_LOGGING_LEVEL=debug \
2828
SOPH_TRACING_ENABLED=true \
2929
OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" \
3030
OTEL_TRACES_EXPORTER="otlp" \
31+
OTEL_METRICS_EXPORTER="otlp" \
3132
OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf" \
3233
go run cmd/sophrosyne/main.go --config configurations/dev.yaml run

cache.go

-141
This file was deleted.

checks.go

-101
Original file line numberDiff line numberDiff line change
@@ -112,104 +112,3 @@ type UpdateCheckResponse struct {
112112
type DeleteCheckRequest struct {
113113
Name string `json:"name" validate:"required"`
114114
}
115-
116-
type CheckServiceCache struct {
117-
cache *Cache
118-
checkService CheckService
119-
tracingService TracingService
120-
}
121-
122-
func NewCheckServiceCache(config *Config, checkService CheckService, tracingService TracingService) *CheckServiceCache {
123-
return &CheckServiceCache{
124-
cache: NewCache(config.Services.Profiles.CacheTTL),
125-
checkService: checkService,
126-
tracingService: tracingService,
127-
}
128-
}
129-
130-
func (c CheckServiceCache) GetCheck(ctx context.Context, id string) (Check, error) {
131-
ctx, span := c.tracingService.StartSpan(ctx, "CheckServiceCache.GetCheck")
132-
v, ok := c.cache.Get(id)
133-
if ok {
134-
span.End()
135-
return v.(Check), nil
136-
}
137-
138-
profile, err := c.checkService.GetCheck(ctx, id)
139-
if err != nil {
140-
span.End()
141-
return Check{}, err
142-
}
143-
144-
c.cache.Set(id, profile)
145-
span.End()
146-
return profile, nil
147-
}
148-
149-
func (c CheckServiceCache) GetCheckByName(ctx context.Context, name string) (Check, error) {
150-
ctx, span := c.tracingService.StartSpan(ctx, "CheckServiceCache.GetCheckByName")
151-
profile, err := c.checkService.GetCheckByName(ctx, name)
152-
if err != nil {
153-
span.End()
154-
return Check{}, err
155-
}
156-
157-
c.cache.Set(profile.ID, profile)
158-
span.End()
159-
return profile, nil
160-
}
161-
162-
func (c CheckServiceCache) GetChecks(ctx context.Context, cursor *DatabaseCursor) ([]Check, error) {
163-
ctx, span := c.tracingService.StartSpan(ctx, "CheckServiceCache.GetChecks")
164-
profiles, err := c.checkService.GetChecks(ctx, cursor)
165-
if err != nil {
166-
span.End()
167-
return nil, err
168-
}
169-
170-
for _, user := range profiles {
171-
c.cache.Set(user.ID, user)
172-
}
173-
174-
span.End()
175-
return profiles, nil
176-
}
177-
178-
func (c CheckServiceCache) CreateCheck(ctx context.Context, check CreateCheckRequest) (Check, error) {
179-
ctx, span := c.tracingService.StartSpan(ctx, "CheckServiceCache.CreateCheck")
180-
createProfile, err := c.checkService.CreateCheck(ctx, check)
181-
if err != nil {
182-
span.End()
183-
return Check{}, err
184-
}
185-
186-
c.cache.Set(createProfile.ID, createProfile)
187-
span.End()
188-
return createProfile, nil
189-
}
190-
191-
func (c CheckServiceCache) UpdateCheck(ctx context.Context, check UpdateCheckRequest) (Check, error) {
192-
ctx, span := c.tracingService.StartSpan(ctx, "CheckServiceCache.UpdateCheck")
193-
updateProfile, err := c.checkService.UpdateCheck(ctx, check)
194-
if err != nil {
195-
span.End()
196-
return Check{}, err
197-
}
198-
199-
c.cache.Set(updateProfile.ID, updateProfile)
200-
span.End()
201-
return updateProfile, nil
202-
}
203-
204-
func (c CheckServiceCache) DeleteCheck(ctx context.Context, id string) error {
205-
ctx, span := c.tracingService.StartSpan(ctx, "CheckServiceCache.DeleteCheck")
206-
err := c.checkService.DeleteCheck(ctx, id)
207-
if err != nil {
208-
span.End()
209-
return err
210-
}
211-
212-
c.cache.Delete(id)
213-
span.End()
214-
return nil
215-
}

cmd/sophrosyne/main.go

+5-9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import (
2828
"syscall"
2929
"time"
3030

31+
"github.com/madsrc/sophrosyne/internal/cache"
32+
3133
"github.com/urfave/cli/v2"
3234
"gopkg.in/yaml.v3"
3335

@@ -266,7 +268,7 @@ func run(c *cli.Context) error {
266268
return err
267269
}
268270

269-
checkService := sophrosyne.NewCheckServiceCache(config, checkServiceDatabase, otelService)
271+
checkService := cache.NewCheckServiceCache(config, checkServiceDatabase, otelService)
270272

271273
profileServiceDatabase, err := pgx.NewProfileService(ctx, config, logger, checkService)
272274
if err != nil {
@@ -278,15 +280,9 @@ func run(c *cli.Context) error {
278280
return err
279281
}
280282

281-
userService := sophrosyne.NewUserServiceCache(config, userServiceDatabase, otelService)
282-
if err != nil {
283-
return err
284-
}
283+
userService := cache.NewUserServiceCache(config, userServiceDatabase, otelService)
285284

286-
profileService := sophrosyne.NewProfileServiceCache(config, profileServiceDatabase, otelService)
287-
if err != nil {
288-
return err
289-
}
285+
profileService := cache.NewProfileServiceCache(config, profileServiceDatabase, otelService)
290286

291287
authzProvider, err := cedar.NewAuthorizationProvider(ctx, logger, userService, otelService, profileService, checkService)
292288

0 commit comments

Comments
 (0)