config

package
v0.0.0-...-ae0dd77 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EnvVarNamespace   = "CHAINSTORAGE_NAMESPACE"
	EnvVarConfigName  = "CHAINSTORAGE_CONFIG"
	EnvVarEnvironment = "CHAINSTORAGE_ENVIRONMENT"
	EnvVarConfigRoot  = "CHAINSTORAGE_CONFIG_ROOT"
	EnvVarConfigPath  = "CHAINSTORAGE_CONFIG_PATH"
	EnvVarTestType    = "TEST_TYPE"
	EnvVarCI          = "CI"

	CurrentFileName = "/internal/config/config.go"

	DefaultNamespace  = "chainstorage"
	DefaultConfigName = "ethereum-mainnet"

	EnvBase        Env = "base"
	EnvLocal       Env = "local"
	EnvDevelopment Env = "development"
	EnvProduction  Env = "production"

	BlobStorageType_UNSPECIFIED BlobStorageType = 0
	BlobStorageType_S3          BlobStorageType = 1
	BlobStorageType_GCS         BlobStorageType = 2

	MetaStorageType_UNSPECIFIED MetaStorageType = 0
	MetaStorageType_DYNAMODB    MetaStorageType = 1
	MetaStorageType_FIRESTORE   MetaStorageType = 2

	DLQType_UNSPECIFIED DLQType = 0
	DLQType_SQS         DLQType = 1
	DLQType_FIRESTORE   DLQType = 2

	AWSAccountDevelopment AWSAccount = "development"
	AWSAccountProduction  AWSAccount = "production"
)

Variables

View Source
var (
	AWSAccountEnvMap = map[AWSAccount]Env{
		"":                    EnvLocal,
		AWSAccountDevelopment: EnvDevelopment,
		AWSAccountProduction:  EnvProduction,
	}

	AWSAccountShortMap = map[AWSAccount]string{
		AWSAccountDevelopment: "dev",
		AWSAccountProduction:  "prod",
	}

	BlobStorageType_value = map[string]int32{
		"UNSPECIFIED": 0,
		"S3":          1,
		"GCS":         2,
	}

	MetaStorageType_value = map[string]int32{
		"UNSPECIFIED": 0,
		"DYNAMODB":    1,
		"FIRESTORE":   2,
	}

	DLQType_value = map[string]int32{
		"UNSPECIFIED": 0,
		"SQS":         1,
		"FIRESTORE":   2,
	}
)

Functions

func GetConfigPath

func GetConfigPath() string

func GetConfigRoot

func GetConfigRoot() string

func ParseConfigName

func ParseConfigName(configName string) (common.Blockchain, common.Network, api.SideChain, error)

func WithCustomConfig

func WithCustomConfig(config *Config) fx.Option

WithCustomConfig injects a custom config to replace the default one.

Types

type AWSAccount

type AWSAccount string

type AccountConfig

type AccountConfig struct {
	User     string `json:"user"`
	Password string `json:"password"`
	Role     string `json:"role"`
}

type ApiConfig

type ApiConfig struct {
	MaxNumBlocks            uint64          `mapstructure:"max_num_blocks" validate:"required"`
	MaxNumBlockFiles        uint64          `mapstructure:"max_num_block_files" validate:"required"`
	NumWorkers              uint64          `mapstructure:"num_workers" validate:"required"`
	StreamingInterval       time.Duration   `mapstructure:"streaming_interval" validate:"required"`
	StreamingBatchSize      uint64          `mapstructure:"streaming_batch_size" validate:"required"`
	StreamingMaxNoEventTime time.Duration   `mapstructure:"streaming_max_no_event_time" validate:"required"`
	Auth                    AuthConfig      `mapstructure:"auth"`
	RateLimit               RateLimitConfig `mapstructure:"rate_limit"`
}

type AuthClient

type AuthClient struct {
	ClientID string `json:"client_id"`
	Token    string `json:"token"`
	RPS      int    `json:"rps"`
}

type AuthConfig

type AuthConfig struct {
	Clients    []AuthClient `json:"clients"`
	DefaultRPS int          `json:"default_rps"`
}

func (*AuthConfig) AsMap

func (c *AuthConfig) AsMap() map[string]*AuthClient

func (*AuthConfig) UnmarshalText

func (c *AuthConfig) UnmarshalText(text []byte) error

type AwsConfig

type AwsConfig struct {
	Region                 string         `mapstructure:"region" validate:"required"`
	Bucket                 string         `mapstructure:"bucket" validate:"required"`
	DynamoDB               DynamoDBConfig `mapstructure:"dynamodb" validate:"required"`
	IsLocalStack           bool           `mapstructure:"local_stack"`
	IsResetLocal           bool           `mapstructure:"reset_local"`
	PresignedUrlExpiration time.Duration  `mapstructure:"presigned_url_expiration" validate:"required"`
	DLQ                    SQSConfig      `mapstructure:"dlq"`
	Storage                StorageConfig  `mapstructure:"storage"`
	AWSAccount             AWSAccount     `mapstructure:"aws_account" validate:"required"`
}

func (*AwsConfig) DeriveConfig

func (c *AwsConfig) DeriveConfig(cfg *Config)

type BackfillerWorkflowConfig

type BackfillerWorkflowConfig struct {
	WorkflowConfig          `mapstructure:",squash"`
	BatchSize               uint64 `mapstructure:"batch_size" validate:"required"`
	MiniBatchSize           uint64 `mapstructure:"mini_batch_size" validate:"required"`
	CheckpointSize          uint64 `mapstructure:"checkpoint_size" validate:"required,gtfield=BatchSize"`
	MaxReprocessedPerBatch  uint64 `mapstructure:"max_reprocessed_per_batch"`
	NumConcurrentExtractors int    `mapstructure:"num_concurrent_extractors" validate:"required"`
}

type BaseWorkflowConfig

type BaseWorkflowConfig interface {
	Base() *WorkflowConfig
}

type BenchmarkerWorkflowConfig

type BenchmarkerWorkflowConfig struct {
	WorkflowConfig                            `mapstructure:",squash"`
	ChildWorkflowExecutionStartToCloseTimeout time.Duration `mapstructure:"child_workflow_execution_start_to_close_timeout" validate:"required"`
}

type BlobStorageType

type BlobStorageType int32

type BlockTagConfig

type BlockTagConfig struct {
	Stable uint32 `mapstructure:"stable"`
	Latest uint32 `mapstructure:"latest"`
}

func (*BlockTagConfig) GetEffectiveBlockTag

func (c *BlockTagConfig) GetEffectiveBlockTag(tag uint32) uint32

GetEffectiveBlockTag returns the effective tag value. Because tag zero was chosen as the first valid tag, it is impossible to tell whether the tag field is omitted or tag zero is explicitly requested. Given that most users will need the stable tag by default, this function returns the stable tag if tag has the default zero value. To request for tag zero, MaxUint32 (4294967295) should be specified.

type CadenceConfig

type CadenceConfig struct {
	Address         string           `mapstructure:"address" validate:"required"`
	Domain          string           `mapstructure:"domain" validate:"required"`
	RetentionPeriod int32            `mapstructure:"retention_period" validate:"required"`
	TLSConfig       CadenceTLSConfig `mapstructure:"tls" validate:"required"`
}

func (*CadenceConfig) DeriveConfig

func (c *CadenceConfig) DeriveConfig(cfg *Config)

type CadenceTLSConfig

type CadenceTLSConfig struct {
	Enabled              bool   `mapstructure:"enabled"`
	ValidateHostname     bool   `mapstructure:"validate_hostname"`
	CertificateAuthority string `mapstructure:"certificate_authority"`
	ClientCertificate    string `mapstructure:"client_certificate"`
	ClientPrivateKey     string `mapstructure:"client_private_key"`
}

type ChainConfig

type ChainConfig struct {
	Blockchain       common.Blockchain `mapstructure:"blockchain" validate:"required"`
	Network          common.Network    `mapstructure:"network" validate:"required"`
	Sidechain        api.SideChain     `mapstructure:"sidechain"`
	BlockTag         BlockTagConfig    `mapstructure:"block_tag"`
	EventTag         EventTagConfig    `mapstructure:"event_tag"`
	Client           ClientConfig      `mapstructure:"client"`
	Feature          FeatureConfig     `mapstructure:"feature"`
	BlockStartHeight uint64            `mapstructure:"block_start_height"`
	// IrreversibleDistance is the maximum distance between the current block height and the last irreversible block height, also
	// known as the max reorg distance, finalization depth. This does not have a default value and must be set by the onboarding user.
	IrreversibleDistance uint64        `mapstructure:"irreversible_distance" validate:"required"`
	Rosetta              RosettaConfig `mapstructure:"rosetta"`
	BlockTime            time.Duration `mapstructure:"block_time" validate:"required"`
}

type ClientConfig

type ClientConfig struct {
	Master      JSONRPCConfig     `mapstructure:"master"`
	Slave       JSONRPCConfig     `mapstructure:"slave"`
	Validator   JSONRPCConfig     `mapstructure:"validator"`
	Consensus   JSONRPCConfig     `mapstructure:"consensus"`
	Retry       ClientRetryConfig `mapstructure:"retry"`
	HttpTimeout time.Duration     `mapstructure:"http_timeout"`
}

type ClientRetryConfig

type ClientRetryConfig struct {
	MaxAttempts int `mapstructure:"max_attempts"`
}

type Config

type Config struct {
	ConfigName     string               `mapstructure:"config_name" validate:"required"`
	StorageType    StorageType          `mapstructure:"storage_type"`
	Chain          ChainConfig          `mapstructure:"chain"`
	AWS            AwsConfig            `mapstructure:"aws"`
	GCP            *GcpConfig           `mapstructure:"gcp"`
	Cadence        CadenceConfig        `mapstructure:"cadence"`
	Workflows      WorkflowsConfig      `mapstructure:"workflows"`
	Api            ApiConfig            `mapstructure:"api"`
	SDK            SDKConfig            `mapstructure:"sdk"`
	Server         ServerConfig         `mapstructure:"server"`
	Cron           CronConfig           `mapstructure:"cron"`
	SLA            SLAConfig            `mapstructure:"sla"`
	FunctionalTest FunctionalTestConfig `mapstructure:"functional_test"`
	StatsD         *StatsDConfig        `mapstructure:"statsd"`
	// contains filtered or unexported fields
}

func New

func New(opts ...ConfigOption) (*Config, error)

func NewFacade

func NewFacade(params Params) (*Config, error)

func (*Config) AwsEnv

func (c *Config) AwsEnv() string

func (*Config) Blockchain

func (c *Config) Blockchain() common.Blockchain

func (*Config) Env

func (c *Config) Env() Env

func (*Config) GetChainMetadataHelper

func (c *Config) GetChainMetadataHelper(req *api.GetChainMetadataRequest) (*api.GetChainMetadataResponse, error)

func (*Config) GetCommonTags

func (c *Config) GetCommonTags() map[string]string

func (*Config) GetEffectiveBlockTag

func (c *Config) GetEffectiveBlockTag(tag uint32) uint32

func (*Config) GetEffectiveEventTag

func (c *Config) GetEffectiveEventTag(eventTag uint32) uint32

func (*Config) GetLatestBlockTag

func (c *Config) GetLatestBlockTag() uint32

func (*Config) GetLatestEventTag

func (c *Config) GetLatestEventTag() uint32

func (*Config) GetStableBlockTag

func (c *Config) GetStableBlockTag() uint32

func (*Config) GetStableEventTag

func (c *Config) GetStableEventTag() uint32

func (*Config) IsCI

func (c *Config) IsCI() bool

func (*Config) IsFunctionalTest

func (c *Config) IsFunctionalTest() bool

func (*Config) IsIntegrationTest

func (c *Config) IsIntegrationTest() bool

func (*Config) IsRosetta

func (c *Config) IsRosetta() bool

func (*Config) IsTest

func (c *Config) IsTest() bool

func (*Config) Namespace

func (c *Config) Namespace() string

func (*Config) Network

func (c *Config) Network() common.Network

func (*Config) Sidechain

func (c *Config) Sidechain() api.SideChain

func (*Config) Tier

func (c *Config) Tier() int

type ConfigOption

type ConfigOption func(options *configOptions)

func WithBlockchain

func WithBlockchain(blockchain common.Blockchain) ConfigOption

func WithEnvironment

func WithEnvironment(env Env) ConfigOption

func WithNamespace

func WithNamespace(namespace string) ConfigOption

func WithNetwork

func WithNetwork(network common.Network) ConfigOption

func WithSidechain

func WithSidechain(sidechain api.SideChain) ConfigOption

type CronConfig

type CronConfig struct {
	BlockRangeSize         uint64 `mapstructure:"block_range_size" validate:"required"`
	DisableDLQProcessor    bool   `mapstructure:"disable_dlq_processor"`
	DisablePollingCanary   bool   `mapstructure:"disable_polling_canary"`
	DisableStreamingCanary bool   `mapstructure:"disable_streaming_canary"`
	DisableNodeCanary      bool   `mapstructure:"disable_node_canary"`
	DisableWorkflowStatus  bool   `mapstructure:"disable_workflow_status"`
}

type CrossValidatorWorkflowConfig

type CrossValidatorWorkflowConfig struct {
	WorkflowConfig        `mapstructure:",squash"`
	BatchSize             uint64        `mapstructure:"batch_size" validate:"required"`
	CheckpointSize        uint64        `mapstructure:"checkpoint_size" validate:"required"`
	BackoffInterval       time.Duration `mapstructure:"backoff_interval"`
	Parallelism           int           `mapstructure:"parallelism" validate:"required,gt=0"`
	ValidationStartHeight uint64        `mapstructure:"validation_start_height"`
	ValidationPercentage  int           `mapstructure:"validation_percentage" validate:"min=0,max=100"`
}

type DLQType

type DLQType int32

type DynamoDBConfig

type DynamoDBConfig struct {
	BlockTable                    string `mapstructure:"block_table" validate:"required"`
	EventTable                    string `mapstructure:"event_table"`
	EventTableHeightIndex         string `mapstructure:"event_table_height_index"`
	VersionedEventTable           string `mapstructure:"versioned_event_table" validate:"required"`
	VersionedEventTableBlockIndex string `mapstructure:"versioned_event_table_block_index" validate:"required"`
	TransactionTable              string `mapstructure:"transaction_table"`
	Arn                           string `mapstructure:"arn"`
}

type Endpoint

type Endpoint struct {
	Name       string            `json:"name"`
	ProviderID string            `json:"provider_id"`
	Url        string            `json:"url"`
	User       string            `json:"user"`
	Password   string            `json:"password"`
	Weight     uint8             `json:"weight"`
	ExtraUrls  map[string]string `json:"extra_urls"`
	RPS        int               `json:"rps"`
}

type EndpointConfig

type EndpointConfig struct {
	StickySession StickySessionConfig `json:"sticky_session"`
	Headers       map[string]string   `json:"headers"`
}

type EndpointGroup

type EndpointGroup struct {
	Endpoints              []Endpoint     `json:"endpoints"`
	EndpointsFailover      []Endpoint     `json:"endpoints_failover"`
	UseFailover            bool           `json:"use_failover"`
	EndpointConfig         EndpointConfig `json:"endpoint_config"`
	EndpointConfigFailover EndpointConfig `json:"endpoint_config_failover"`
}

func (*EndpointGroup) ActiveStickySession

func (e *EndpointGroup) ActiveStickySession() *StickySessionConfig

func (*EndpointGroup) Empty

func (e *EndpointGroup) Empty() bool

func (*EndpointGroup) UnmarshalText

func (e *EndpointGroup) UnmarshalText(text []byte) error

type Env

type Env string

func GetEnv

func GetEnv() Env

type EventBackfillerWorkflowConfig

type EventBackfillerWorkflowConfig struct {
	WorkflowConfig `mapstructure:",squash"`
	BatchSize      uint64 `mapstructure:"batch_size" validate:"required"`
	CheckpointSize uint64 `mapstructure:"checkpoint_size" validate:"required,gtfield=BatchSize"`
}

type EventTagConfig

type EventTagConfig struct {
	Stable uint32 `mapstructure:"stable"`
	Latest uint32 `mapstructure:"latest"`
}

func (*EventTagConfig) GetEffectiveEventTag

func (c *EventTagConfig) GetEffectiveEventTag(eventTag uint32) uint32

type FeatureConfig

type FeatureConfig struct {
	RosettaParser               bool `mapstructure:"rosetta_parser"`
	DefaultStableEvent          bool `mapstructure:"default_stable_event"`
	TransactionIndexing         bool `mapstructure:"transaction_indexing"`
	BlockValidationEnabled      bool `mapstructure:"block_validation_enabled"`
	BlockValidationMuted        bool `mapstructure:"block_validation_muted"`
	VerifiedAccountStateEnabled bool `mapstructure:"verified_account_state_enabled"`
}

type FunctionalTest

type FunctionalTest struct {
	ConfigName string `json:"config_name"`
}

type FunctionalTestConfig

type FunctionalTestConfig struct {
	SkipFunctionalTest []FunctionalTest `json:"skip_functional_test"`
}

func (*FunctionalTestConfig) Empty

func (f *FunctionalTestConfig) Empty() bool

func (*FunctionalTestConfig) UnmarshalText

func (f *FunctionalTestConfig) UnmarshalText(text []byte) error

type GcpConfig

type GcpConfig struct {
	Project                string        `mapstructure:"project" validate:"required"`
	Bucket                 string        `mapstructure:"bucket"`
	PresignedUrlExpiration time.Duration `mapstructure:"presigned_url_expiration" validate:"required"`
}

type JSONRPCConfig

type JSONRPCConfig struct {
	EndpointGroup EndpointGroup `mapstructure:"endpoint_group"`
}

type MetaStorageType

type MetaStorageType int32

type MonitorWorkflowConfig

type MonitorWorkflowConfig struct {
	WorkflowConfig  `mapstructure:",squash"`
	BatchSize       uint64        `mapstructure:"batch_size" validate:"required"`
	CheckpointSize  uint64        `mapstructure:"checkpoint_size" validate:"required"`
	BackoffInterval time.Duration `mapstructure:"backoff_interval"`
	Parallelism     int           `mapstructure:"parallelism" validate:"required,gt=0"`
	BlockGapLimit   uint64        `mapstructure:"block_gap_limit" validate:"required"`
	EventGapLimit   int64         `mapstructure:"event_gap_limit" validate:"required"`
}

type Params

type Params struct {
	fx.In
	CustomConfig *customConfig `optional:"true"`
}

type PollerWorkflowConfig

type PollerWorkflowConfig struct {
	WorkflowConfig               `mapstructure:",squash"`
	MaxBlocksToSyncPerCycle      uint64        `mapstructure:"max_blocks_to_sync_per_cycle" validate:"required"`
	CheckpointSize               uint64        `mapstructure:"checkpoint_size" validate:"required"`
	BackoffInterval              time.Duration `mapstructure:"backoff_interval"`
	Parallelism                  int           `mapstructure:"parallelism" validate:"required"`
	SessionCreationTimeout       time.Duration `mapstructure:"session_creation_timeout" validate:"required"`
	SessionEnabled               bool          `mapstructure:"session_enabled"`
	FastSync                     bool          `mapstructure:"fast_sync"`
	NumBlocksToSkip              uint64        `mapstructure:"num_blocks_to_skip"`
	TransactionsWriteParallelism int           `mapstructure:"transactions_write_parallelism"`
	ConsensusValidation          bool          `mapstructure:"consensus_validation"`
	ConsensusValidationMuted     bool          `mapstructure:"consensus_validation_muted"`
	LivenessCheckEnabled         bool          `mapstructure:"liveness_check_enabled"`
	// LivenessCheckViolationLimit is threshold for liveness check violations before poller failover is triggered.
	// time to trigger failover = LivenessCheckInterval * LivenessCheckViolationLimit
	LivenessCheckViolationLimit uint64 `mapstructure:"liveness_check_violation_limit"`
	// LivenessCheckInterval is the interval between liveness checks.
	LivenessCheckInterval time.Duration `mapstructure:"liveness_check_interval"`
}

type RateLimitConfig

type RateLimitConfig struct {
	GlobalRPS    int `mapstructure:"global_rps"`
	PerClientRPS int `mapstructure:"per_client_rps"`
}

type ReplicatorWorkflowConfig

type ReplicatorWorkflowConfig struct {
	WorkflowConfig `mapstructure:",squash"`
	BatchSize      uint64 `mapstructure:"batch_size" validate:"required"`
	MiniBatchSize  uint64 `mapstructure:"mini_batch_size" validate:"required"`
	CheckpointSize uint64 `mapstructure:"checkpoint_size" validate:"required,gtfield=BatchSize"`
	Parallelism    int    `mapstructure:"parallelism" validate:"required"`
}

type RetryPolicy

type RetryPolicy struct {
	MaximumAttempts    int32         `mapstructure:"maximum_attempts" validate:"required,gt=1"` // 1 means no retries.
	BackoffCoefficient float64       `mapstructure:"backoff_coefficient" validate:"required"`
	InitialInterval    time.Duration `mapstructure:"initial_interval" validate:"required"`
	MaximumInterval    time.Duration `mapstructure:"maximum_interval" validate:"required"`
}

type RosettaConfig

type RosettaConfig struct {
	Blockchain              string  `mapstructure:"blockchain"`
	Network                 string  `mapstructure:"network" validate:"required_with=Blockchain"`
	BlockNotFoundErrorCodes []int32 `mapstructure:"block_not_found_error_codes"`
	EnableRawBlockApi       bool    `mapstructure:"enable_raw_block_api"`
	FromRosetta             bool    `mapstructure:"from_rosetta"`
}

type SDKConfig

type SDKConfig struct {
	ChainstorageAddress string `mapstructure:"chainstorage_address" validate:"required"`
	NumWorkers          uint64 `mapstructure:"num_workers" validate:"required"`
	Restful             bool   `mapstructure:"restful"`
	AuthHeader          string `mapstructure:"auth_header"`
	AuthToken           string `mapstructure:"auth_token"`
}

func (*SDKConfig) DeriveConfig

func (c *SDKConfig) DeriveConfig(cfg *Config)

type SLAConfig

type SLAConfig struct {
	Tier                           int           `mapstructure:"tier" validate:"required"` // 1 for high urgency; 2 for low urgency; 3 for work in progress.
	BlockHeightDelta               uint64        `mapstructure:"block_height_delta" validate:"required"`
	BlockTimeDelta                 time.Duration `mapstructure:"block_time_delta" validate:"required"`
	TimeSinceLastBlock             time.Duration `mapstructure:"time_since_last_block" validate:"required"`
	EventHeightDelta               uint64        `mapstructure:"event_height_delta" validate:"required"`
	EventTimeDelta                 time.Duration `mapstructure:"event_time_delta" validate:"required"`
	TimeSinceLastEvent             time.Duration `mapstructure:"time_since_last_event" validate:"required"`
	OutOfSyncNodeDistance          uint64        `mapstructure:"out_of_sync_node_distance" validate:"required"`
	OutOfSyncValidatorNodeDistance uint64        `mapstructure:"out_of_sync_validator_node_distance"` // If not set, use OutOfSyncNodeDistance.
	ExpectedWorkflows              []string      `mapstructure:"expected_workflows"`
}

type SQSConfig

type SQSConfig struct {
	Name                  string `mapstructure:"name" validate:"required"`
	VisibilityTimeoutSecs int64  `mapstructure:"visibility_timeout_secs"`
	DelaySecs             int64  `mapstructure:"delay_secs"`
	OwnerAccountId        string `mapstructure:"owner_account_id"`
}

type ServerConfig

type ServerConfig struct {
	BindAddress string `mapstructure:"bind_address" validate:"required"`
}

type StatsDConfig

type StatsDConfig struct {
	Address string `mapstructure:"address" validate:"required"`
	Prefix  string `mapstructure:"prefix"`
}

type StickySessionConfig

type StickySessionConfig struct {
	// The CookieHash method consistently maps a cookie value to a specific node.
	CookieHash string `json:"cookie_hash"`

	// The CookiePassive method persists the cookie value provided by the server.
	CookiePassive bool `json:"cookie_passive"`

	// The HeaderHash method consistently maps a header value to a specific node.
	HeaderHash string `json:"header_hash"`
}

func (*StickySessionConfig) Enabled

func (e *StickySessionConfig) Enabled() bool

type StorageConfig

type StorageConfig struct {
	DataCompression api.Compression `mapstructure:"data_compression"`
}

type StorageType

type StorageType struct {
	BlobStorageType BlobStorageType `mapstructure:"blob"`
	MetaStorageType MetaStorageType `mapstructure:"meta"`
	DLQType         DLQType         `mapstructure:"dlq"`
}

type StreamerWorkflowConfig

type StreamerWorkflowConfig struct {
	WorkflowConfig  `mapstructure:",squash"`
	BatchSize       uint64        `mapstructure:"batch_size" validate:"required"`
	CheckpointSize  uint64        `mapstructure:"checkpoint_size" validate:"required"`
	BackoffInterval time.Duration `mapstructure:"backoff_interval"`
}

type WorkerConfig

type WorkerConfig struct {
	TaskList string `mapstructure:"task_list"`
}

type WorkflowConfig

type WorkflowConfig struct {
	WorkflowIdentity               string         `mapstructure:"workflow_identity" validate:"required"`
	Enabled                        bool           `mapstructure:"enabled"`
	TaskList                       string         `mapstructure:"task_list" validate:"required"`
	WorkflowRunTimeout             time.Duration  `mapstructure:"workflow_run_timeout" validate:"required"`
	WorkflowRetry                  *RetryPolicy   `mapstructure:"workflow_retry"`
	ActivityScheduleToCloseTimeout time.Duration  `mapstructure:"activity_schedule_to_close_timeout" validate:"required"`
	ActivityStartToCloseTimeout    time.Duration  `mapstructure:"activity_start_to_close_timeout" validate:"required"`
	ActivityHeartbeatTimeout       time.Duration  `mapstructure:"activity_heartbeat_timeout"`
	ActivityRetry                  *RetryPolicy   `mapstructure:"activity_retry" validate:"required"`
	BlockTag                       BlockTagConfig `mapstructure:"block_tag"`
	EventTag                       EventTagConfig `mapstructure:"event_tag"`
	Storage                        StorageConfig  `mapstructure:"storage"`
	IrreversibleDistance           uint64         `mapstructure:"irreversible_distance" validate:"required"`
	FailoverEnabled                bool           `mapstructure:"failover_enabled"`
	ConsensusFailoverEnabled       bool           `mapstructure:"consensus_failover_enabled"`
	SLA                            SLAConfig      `mapstructure:"sla"`
}

func (*WorkflowConfig) Base

func (c *WorkflowConfig) Base() *WorkflowConfig

func (*WorkflowConfig) DeriveConfig

func (c *WorkflowConfig) DeriveConfig(cfg *Config)

func (*WorkflowConfig) GetEffectiveBlockTag

func (c *WorkflowConfig) GetEffectiveBlockTag(tag uint32) uint32

func (*WorkflowConfig) GetEffectiveEventTag

func (c *WorkflowConfig) GetEffectiveEventTag(eventTag uint32) uint32

type WorkflowsConfig

type WorkflowsConfig struct {
	Workers         []WorkerConfig                `mapstructure:"workers"`
	Backfiller      BackfillerWorkflowConfig      `mapstructure:"backfiller"`
	Poller          PollerWorkflowConfig          `mapstructure:"poller"`
	Benchmarker     BenchmarkerWorkflowConfig     `mapstructure:"benchmarker"`
	Monitor         MonitorWorkflowConfig         `mapstructure:"monitor"`
	Streamer        StreamerWorkflowConfig        `mapstructure:"streamer"`
	CrossValidator  CrossValidatorWorkflowConfig  `mapstructure:"cross_validator"`
	EventBackfiller EventBackfillerWorkflowConfig `mapstructure:"event_backfiller"`
	Replicator      ReplicatorWorkflowConfig      `mapstructure:"replicator"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL