Skip to content

Commit eaa1dd0

Browse files
author
Evsyukov Denis
committed
refactor: change ScheduleManager fields to pointers for consistency and improved memory management
Signed-off-by: Evsyukov Denis <denis.evsyukov@flant.com>
1 parent 7531e0b commit eaa1dd0

7 files changed

Lines changed: 17 additions & 27 deletions

File tree

pkg/hook/controller/hook_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (hc *HookController) InitKubernetesBindings(bindings []htypes.OnKubernetesE
6666
hc.logger = logger
6767
}
6868

69-
func (hc *HookController) InitScheduleBindings(bindings []htypes.ScheduleConfig, scheduleMgr schedulemanager.ScheduleManager) {
69+
func (hc *HookController) InitScheduleBindings(bindings []htypes.ScheduleConfig, scheduleMgr *schedulemanager.ScheduleManager) {
7070
if len(bindings) == 0 {
7171
return
7272
}

pkg/hook/controller/schedule_bindings_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type ScheduleBindingToCrontabLink struct {
2222
// ScheduleBindingsController is a main implementation of KubernetesHooksController
2323
type ScheduleBindingsController struct {
2424
// dependencies
25-
scheduleManager schedulemanager.ScheduleManager
25+
scheduleManager *schedulemanager.ScheduleManager
2626

2727
l sync.RWMutex
2828
// All hooks with 'kubernetes' bindings
@@ -43,7 +43,7 @@ func (c *ScheduleBindingsController) WithScheduleBindings(bindings []htypes.Sche
4343
c.ScheduleBindings = bindings
4444
}
4545

46-
func (c *ScheduleBindingsController) WithScheduleManager(scheduleManager schedulemanager.ScheduleManager) {
46+
func (c *ScheduleBindingsController) WithScheduleManager(scheduleManager *schedulemanager.ScheduleManager) {
4747
c.l.Lock()
4848
c.scheduleManager = scheduleManager
4949
c.l.Unlock()

pkg/hook/hook_manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type Manager struct {
3030
workingDir string
3131
tempDir string
3232
kubeEventsManager *kubeeventsmanager.KubeEventsManager
33-
scheduleManager schedulemanager.ScheduleManager
33+
scheduleManager *schedulemanager.ScheduleManager
3434
conversionWebhookManager *conversion.WebhookManager
3535
admissionWebhookManager *admission.WebhookManager
3636

@@ -53,7 +53,7 @@ type ManagerConfig struct {
5353
WorkingDir string
5454
TempDir string
5555
Kmgr *kubeeventsmanager.KubeEventsManager
56-
Smgr schedulemanager.ScheduleManager
56+
Smgr *schedulemanager.ScheduleManager
5757
Wmgr *admission.WebhookManager
5858
Cmgr *conversion.WebhookManager
5959

pkg/schedule_manager/schedule_manager.go

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,12 @@ import (
1010
smtypes "github.com/flant/shell-operator/pkg/schedule_manager/types"
1111
)
1212

13-
type ScheduleManager interface {
14-
Stop()
15-
Start()
16-
Add(entry smtypes.ScheduleEntry)
17-
Remove(entry smtypes.ScheduleEntry)
18-
Ch() chan string
19-
}
20-
2113
type CronEntry struct {
2214
EntryID cron.EntryID
2315
Ids map[string]bool
2416
}
2517

26-
type scheduleManager struct {
18+
type ScheduleManager struct {
2719
ctx context.Context
2820
cancel context.CancelFunc
2921
cron *cron.Cron
@@ -33,11 +25,9 @@ type scheduleManager struct {
3325
logger *log.Logger
3426
}
3527

36-
var _ ScheduleManager = &scheduleManager{}
37-
38-
func NewScheduleManager(ctx context.Context, logger *log.Logger) *scheduleManager {
28+
func NewScheduleManager(ctx context.Context, logger *log.Logger) *ScheduleManager {
3929
cctx, cancel := context.WithCancel(ctx)
40-
sm := &scheduleManager{
30+
sm := &ScheduleManager{
4131
ctx: cctx,
4232
cancel: cancel,
4333
ScheduleCh: make(chan string, 1),
@@ -49,7 +39,7 @@ func NewScheduleManager(ctx context.Context, logger *log.Logger) *scheduleManage
4939
return sm
5040
}
5141

52-
func (sm *scheduleManager) Stop() {
42+
func (sm *ScheduleManager) Stop() {
5343
if sm.cancel != nil {
5444
sm.cancel()
5545
}
@@ -58,7 +48,7 @@ func (sm *scheduleManager) Stop() {
5848
// Add create entry for crontab and id and start scheduled function.
5949
// Crontab string should be validated with cron.Parse
6050
// function before pass to Add.
61-
func (sm *scheduleManager) Add(newEntry smtypes.ScheduleEntry) {
51+
func (sm *ScheduleManager) Add(newEntry smtypes.ScheduleEntry) {
6252
logEntry := sm.logger.With("operator.component", "scheduleManager")
6353

6454
cronEntry, hasCronEntry := sm.Entries[newEntry.Crontab]
@@ -89,7 +79,7 @@ func (sm *scheduleManager) Add(newEntry smtypes.ScheduleEntry) {
8979
}
9080
}
9181

92-
func (sm *scheduleManager) Remove(delEntry smtypes.ScheduleEntry) {
82+
func (sm *ScheduleManager) Remove(delEntry smtypes.ScheduleEntry) {
9383
cronEntry, hasCronEntry := sm.Entries[delEntry.Crontab]
9484

9585
// Nothing to Remove
@@ -115,14 +105,14 @@ func (sm *scheduleManager) Remove(delEntry smtypes.ScheduleEntry) {
115105
}
116106
}
117107

118-
func (sm *scheduleManager) Start() {
108+
func (sm *ScheduleManager) Start() {
119109
sm.cron.Start()
120110
go func() {
121111
<-sm.ctx.Done()
122112
sm.cron.Stop()
123113
}()
124114
}
125115

126-
func (sm *scheduleManager) Ch() chan string {
116+
func (sm *ScheduleManager) Ch() chan string {
127117
return sm.ScheduleCh
128118
}

pkg/shell-operator/manager_events_handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
type managerEventsHandlerConfig struct {
1717
tqs *queue.TaskQueueSet
1818
mgr *kubeeventsmanager.KubeEventsManager
19-
smgr schedulemanager.ScheduleManager
19+
smgr *schedulemanager.ScheduleManager
2020

2121
logger *log.Logger
2222
}
@@ -26,7 +26,7 @@ type ManagerEventsHandler struct {
2626
cancel context.CancelFunc
2727

2828
kubeEventsManager *kubeeventsmanager.KubeEventsManager
29-
scheduleManager schedulemanager.ScheduleManager
29+
scheduleManager *schedulemanager.ScheduleManager
3030

3131
kubeEventCb func(kubeEvent kemtypes.KubeEvent) []task.Task
3232
scheduleCb func(crontab string) []task.Task

pkg/shell-operator/operator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type ShellOperator struct {
4747
KubeClient *klient.Client
4848
ObjectPatcher *objectpatch.ObjectPatcher
4949

50-
ScheduleManager schedulemanager.ScheduleManager
50+
ScheduleManager *schedulemanager.ScheduleManager
5151
KubeEventsManager *kubeeventsmanager.KubeEventsManager
5252

5353
TaskQueues *queue.TaskQueueSet

test/hook/context/generator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type BindingContextController struct {
3636

3737
Controller *StateController
3838
KubeEventsManager *kubeeventsmanager.KubeEventsManager
39-
ScheduleManager schedulemanager.ScheduleManager
39+
ScheduleManager *schedulemanager.ScheduleManager
4040

4141
fakeCluster *fake.Cluster
4242

0 commit comments

Comments
 (0)