63
// NewSpecBuilder takes the compute-limit getters directly (rather than a *dynamicconfig.Collection)
64
// so the dynamic-config plumbing stays in the wiring layer, per the common codebase pattern.
65
>
func NewSpecBuilder(warnIterations, maxIterations dynamicconfig.IntPropertyFn) *SpecBuilder {
spec.go
66
>
return &SpecBuilder{
67
>
warnIterations: warnIterations,
68
>
maxIterations: maxIterations,
69
>
locationCache: cache.New(1000,
70
>
&cache.Options{
71
>
TTL: 24 * time.Hour,
72
>
},
73
>
),
74
>
}
75
>
}
76
77
func (b *SpecBuilder) NewCompiledSpec(spec *schedulepb.ScheduleSpec) (*CompiledSpec, error) {