set 10 min quotations timeout

This commit is contained in:
Stephan D
2026-02-20 17:19:31 +01:00
parent 199811ba09
commit 51514159f5
14 changed files with 279 additions and 26 deletions

View File

@@ -22,11 +22,28 @@ type Imp struct {
file string
debug bool
config *grpcapp.Config
config *config
app *grpcapp.App[storage.Repository]
service *oracle.Service
}
type config struct {
*grpcapp.Config `yaml:",inline"`
MaxQuoteTTLMs int64 `yaml:"max_quote_ttl_ms"`
}
const (
defaultMaxQuoteTTL = 10 * time.Minute
defaultMaxQuoteTTLMillis = int64(defaultMaxQuoteTTL / time.Millisecond)
)
func (c *config) maxQuoteTTLMillis() int64 {
if c == nil || c.MaxQuoteTTLMs <= 0 {
return defaultMaxQuoteTTLMillis
}
return c.MaxQuoteTTLMs
}
func Create(logger mlogger.Logger, file string, debug bool) (*Imp, error) {
return &Imp{
logger: logger.Named("server"),
@@ -63,12 +80,18 @@ func (i *Imp) Start() error {
}
serviceFactory := func(logger mlogger.Logger, repo storage.Repository, producer msg.Producer) (grpcapp.Service, error) {
svc := oracle.NewService(logger, repo, producer, cfg.GRPC.DiscoveryInvokeURI())
svc := oracle.NewService(
logger,
repo,
producer,
cfg.GRPC.DiscoveryInvokeURI(),
oracle.WithMaxQuoteTTLMillis(cfg.maxQuoteTTLMillis()),
)
i.service = svc
return svc, nil
}
app, err := grpcapp.NewApp(i.logger, "fx", cfg, i.debug, repoFactory, serviceFactory)
app, err := grpcapp.NewApp(i.logger, "fx", cfg.Config, i.debug, repoFactory, serviceFactory)
if err != nil {
return err
}
@@ -77,14 +100,14 @@ func (i *Imp) Start() error {
return i.app.Start()
}
func (i *Imp) loadConfig() (*grpcapp.Config, error) {
func (i *Imp) loadConfig() (*config, error) {
data, err := os.ReadFile(i.file)
if err != nil {
i.logger.Error("Could not read configuration file", zap.String("config_file", i.file), zap.Error(err))
return nil, err
}
cfg := &grpcapp.Config{}
cfg := &config{Config: &grpcapp.Config{}}
if err := yaml.Unmarshal(data, cfg); err != nil {
i.logger.Error("Failed to parse configuration", zap.Error(err))
return nil, err