Skip to content

Commit a58a714

Browse files
author
eweziyi
committed
Refactor poller into a service
1 parent 1cf57ff commit a58a714

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

plugins/turing/runner/experiment_runner.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ func (er *experimentRunner) startBackgroundServices(
257257
}
258258
}()
259259
}
260+
if er.appContext.PollerService != nil {
261+
er.appContext.PollerService.Start()
262+
}
260263
}
261264

262265
func (er *experimentRunner) getRequestParams(

treatment-service/appcontext/appcontext.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ type AppContext struct {
2424

2525
AssignedTreatmentLogger *monitoring.AssignedTreatmentLogger
2626
LocalStorage *models.LocalStorage
27+
PollerService *services.PollerService
2728
}
2829

2930
func NewAppContext(cfg *config.Config) (*AppContext, error) {
@@ -122,6 +123,11 @@ func NewAppContext(cfg *config.Config) (*AppContext, error) {
122123
return nil, err
123124
}
124125

126+
var pollerService *services.PollerService
127+
if cfg.ManagementServicePollerConfig.Enabled {
128+
pollerService = services.NewPollerService(cfg.ManagementServicePollerConfig, localStorage)
129+
}
130+
125131
appContext := &AppContext{
126132
ExperimentService: experimentSvc,
127133
MetricService: metricService,
@@ -131,6 +137,7 @@ func NewAppContext(cfg *config.Config) (*AppContext, error) {
131137
AssignedTreatmentLogger: logger,
132138
MessageQueueService: messageQueueService,
133139
LocalStorage: localStorage,
140+
PollerService: pollerService,
134141
}
135142

136143
return appContext, nil

treatment-service/server/server.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ type Server struct {
3333
subscribe bool
3434
// cleanup captures all the actions to be executed on server shut down
3535
cleanup []func()
36-
// poller captures the poller instance
37-
poller *Poller
3836
}
3937

4038
// NewServer creates and configures an APIServer serving all application routes.
@@ -108,11 +106,6 @@ func NewServer(configFiles []string) (*Server, error) {
108106
subscribe = true
109107
}
110108

111-
var poller *Poller
112-
if cfg.ManagementServicePollerConfig.Enabled {
113-
poller = NewPoller(cfg.ManagementServicePollerConfig, appCtx.LocalStorage)
114-
}
115-
116109
srv := http.Server{
117110
Addr: cfg.ListenAddress(),
118111
Handler: mux,
@@ -123,7 +116,6 @@ func NewServer(configFiles []string) (*Server, error) {
123116
appContext: appCtx,
124117
subscribe: subscribe,
125118
cleanup: cleanup,
126-
poller: poller,
127119
}, nil
128120
}
129121

@@ -141,11 +133,6 @@ func (srv *Server) Start() {
141133
}()
142134
log.Printf("Listening on %s\n", srv.Addr)
143135

144-
if srv.poller != nil {
145-
log.Println("Starting poller...")
146-
srv.poller.Start()
147-
}
148-
149136
stop := make(chan os.Signal, 1)
150137
signal.Notify(stop, os.Interrupt)
151138

@@ -193,5 +180,9 @@ func (srv *Server) startBackgroundService(errChannel chan error) context.CancelF
193180
}
194181
}()
195182

183+
if srv.appContext.PollerService != nil {
184+
srv.appContext.PollerService.Start()
185+
}
186+
196187
return cancel
197188
}

treatment-service/server/poller.go renamed to treatment-service/services/poller_service.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package server
1+
package services
22

33
import (
44
"log"
@@ -8,24 +8,25 @@ import (
88
"github.com/caraml-dev/xp/treatment-service/models"
99
)
1010

11-
type Poller struct {
11+
type PollerService struct {
1212
pollerConfig config.ManagementServicePollerConfig
1313
localStorage *models.LocalStorage
1414
stopChannel chan struct{}
1515
}
1616

17-
// NewPoller creates a new Poller instance with the given configuration and local storage.
17+
// NewPollerService creates a new PollerService instance with the given configuration and local storage.
1818
// pollerConfig: configuration for the poller
1919
// localStorage: local storage to be used by the poller
20-
func NewPoller(pollerConfig config.ManagementServicePollerConfig, localStorage *models.LocalStorage) *Poller {
21-
return &Poller{
20+
func NewPollerService(pollerConfig config.ManagementServicePollerConfig, localStorage *models.LocalStorage) *PollerService {
21+
return &PollerService{
2222
pollerConfig: pollerConfig,
2323
localStorage: localStorage,
2424
stopChannel: make(chan struct{}),
2525
}
2626
}
2727

28-
func (p *Poller) Start() {
28+
func (p *PollerService) Start() {
29+
log.Println("Starting management service poller service...")
2930
pollInterval := time.Duration(p.pollerConfig.PollIntervalSeconds) * time.Second
3031
ticker := time.NewTicker(pollInterval)
3132
go func() {
@@ -46,11 +47,11 @@ func (p *Poller) Start() {
4647
}()
4748
}
4849

49-
func (p *Poller) Stop() {
50+
func (p *PollerService) Stop() {
5051
close(p.stopChannel)
5152
}
5253

53-
func (p *Poller) Refresh() error {
54+
func (p *PollerService) Refresh() error {
5455
err := p.localStorage.Init()
5556
return err
5657
}

0 commit comments

Comments
 (0)