set 10 min quotations timeout
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user