millennium

package
v0.0.0-...-4b7be03 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2020 License: Apache-2.0 Imports: 39 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DatabaseURLFlagName is the command line flag for configuring the Millennium postgres URL
	DatabaseURLFlagName = "db-url"
	// AiBlocksCoreDBURLFlagName is the command line flag for configuring the postgres AiBlocks Core URL
	AiBlocksCoreDBURLFlagName = "aiblocks-core-db-url"
	// AiBlocksCoreDBURLFlagName is the command line flag for configuring the URL fore AiBlocks Core HTTP endpoint
	AiBlocksCoreURLFlagName = "aiblocks-core-url"
)

Variables

This section is empty.

Functions

func ApplyFlags

func ApplyFlags(config *Config, flags support.ConfigOptions)

ApplyFlags applies the command line flags on the given Config instance

Types

type App

type App struct {
	// contains filtered or unexported fields
}

App represents the root of the state of a millennium instance.

func NewApp

func NewApp(config Config) (*App, error)

NewApp constructs an new App instance from the provided config.

func NewAppFromFlags

func NewAppFromFlags(config *Config, flags support.ConfigOptions) *App

NewAppFromFlags constructs a new Millennium App from the given command line flags

func (*App) Close

func (a *App) Close()

Close cancels the app. It does not close DB connections - use App.CloseDB().

func (*App) CloseDB

func (a *App) CloseDB()

CloseDB closes DB connections. When using during web server shut down make sure all requests are first properly finished to avoid "sql: database is closed" errors.

func (*App) DeleteUnretainedHistory

func (a *App) DeleteUnretainedHistory() error

DeleteUnretainedHistory forwards to the app's reaper. See `reap.DeleteUnretainedHistory` for details

func (*App) GetCoreSettings

func (a *App) GetCoreSettings() actions.CoreSettings

func (*App) HistoryQ

func (a *App) HistoryQ() *history.Q

HistoryQ returns a helper object for performing sql queries against the history portion of millennium's database.

func (*App) Ingestion

func (a *App) Ingestion() ingest.System

Ingestion returns the ingestion system associated with this Millennium instance

func (*App) MillenniumSession

func (a *App) MillenniumSession(ctx context.Context) *db.Session

MillenniumSession returns a new session that loads data from the millennium database. The returned session is bound to `ctx`.

func (*App) Serve

func (a *App) Serve()

Serve starts the millennium web server, binding it to a socket, setting up the shutdown signals.

func (*App) Tick

func (a *App) Tick()

Tick triggers millennium to update all of it's background processes such as transaction submission, metrics, ingestion and reaping.

func (*App) UpdateAiBlocksCoreInfo

func (a *App) UpdateAiBlocksCoreInfo()

UpdateAiBlocksCoreInfo updates the value of CoreVersion, CurrentProtocolVersion, and CoreSupportedProtocolVersion from the AiBlocks core API.

func (*App) UpdateFeeStatsState

func (a *App) UpdateFeeStatsState()

UpdateFeeStatsState triggers a refresh of several operation fee metrics.

func (*App) UpdateLedgerState

func (a *App) UpdateLedgerState()

UpdateLedgerState triggers a refresh of several metrics gauges, such as open db connections and ledger state

type Config

type Config struct {
	DatabaseURL        string
	HistoryArchiveURLs []string
	Port               uint
	AdminPort          uint

	EnableCaptiveCoreIngestion bool
	AiBlocksCoreBinaryPath     string
	AiBlocksCoreConfigPath     string
	AiBlocksCoreDatabaseURL    string
	AiBlocksCoreURL            string
	RemoteCaptiveCoreURL       string

	// MaxDBConnections has a priority over all 4 values below.
	MaxDBConnections               int
	MillenniumDBMaxOpenConnections int
	MillenniumDBMaxIdleConnections int

	SSEUpdateFrequency time.Duration
	ConnectionTimeout  time.Duration
	RateQuota          *throttled.RateQuota
	FriendbotURL       *url.URL
	LogLevel           logrus.Level
	LogFile            string
	// MaxPathLength is the maximum length of the path returned by `/paths` endpoint.
	MaxPathLength     uint
	NetworkPassphrase string
	SentryDSN         string
	LogglyToken       string
	LogglyTag         string
	// TLSCert is a path to a certificate file to use for millennium's TLS config
	TLSCert string
	// TLSKey is the path to a private key file to use for millennium's TLS config
	TLSKey string
	// Ingest toggles whether this millennium instance should run the data ingestion subsystem.
	Ingest bool
	// CursorName is the cursor used for ingesting from aiblocks-core.
	// Setting multiple cursors in different Millennium instances allows multiple
	// Millenniums to ingest from the same aiblocks-core instance without cursor
	// collisions.
	CursorName string
	// HistoryRetentionCount represents the minimum number of ledgers worth of
	// history data to retain in the millennium database. For the purposes of
	// determining a "retention duration", each ledger roughly corresponds to 10
	// seconds of real time.
	HistoryRetentionCount uint
	// StaleThreshold represents the number of ledgers a history database may be
	// out-of-date by before millennium begins to respond with an error to history
	// requests.
	StaleThreshold uint
	// SkipCursorUpdate causes the ingestor to skip reporting the "last imported
	// ledger" state to aiblocks-core.
	SkipCursorUpdate bool
	// IngestDisableStateVerification disables state verification
	// `System.verifyState()` when set to `true`.
	IngestDisableStateVerification bool
	// ApplyMigrations will apply pending migrations to the millennium database
	// before starting the millennium service
	ApplyMigrations bool
}

Config is the configuration for millennium. It gets populated by the app's main function and is provided to NewApp.

func Flags

func Flags() (*Config, support.ConfigOptions)

Flags returns a Config instance and a list of commandline flags which modify the Config instance

Directories

Path Synopsis
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on millennium.
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on millennium.
Package assets is a simple helper package to help convert to/from xdr.AssetType values
Package assets is a simple helper package to help convert to/from xdr.AssetType values
Package codes is a helper package to help convert to transaction and operation result codes to strings used in millennium.
Package codes is a helper package to help convert to transaction and operation result codes to strings used in millennium.
db2
Package db2 is the replacement for db.
Package db2 is the replacement for db.
history
Package history contains database record definitions useable for reading rows from a the history portion of millennium's database
Package history contains database record definitions useable for reading rows from a the history portion of millennium's database
Package hchi provides functions to support embedded and retrieving a request id from a go context tree
Package hchi provides functions to support embedded and retrieving a request id from a go context tree
Package ingest contains the new ingestion system for millennium.
Package ingest contains the new ingestion system for millennium.
Package ledger provides useful utilities concerning ledgers within aiblocks, specifically as a central location to store a cached snapshot of the state of both millennium's and aiblocks-core's views of the ledger.
Package ledger provides useful utilities concerning ledgers within aiblocks, specifically as a central location to store a cached snapshot of the state of both millennium's and aiblocks-core's views of the ledger.
Package operationfeestats provides useful utilities concerning operation fee stats within aiblocks,specifically as a central location to store a cached snapshot of the state of network per operation fees and surge pricing.
Package operationfeestats provides useful utilities concerning operation fee stats within aiblocks,specifically as a central location to store a cached snapshot of the state of network per operation fees and surge pricing.
Package paths provides utilities and facilities for payment paths as needed by millennium.
Package paths provides utilities and facilities for payment paths as needed by millennium.
Package reap contains the history reaping subsystem for millennium.
Package reap contains the history reaping subsystem for millennium.
sse
This package contains the Server Sent Events implementation used by millennium.
This package contains the Server Sent Events implementation used by millennium.
Package simplepath provides an implementation of paths.
Package simplepath provides an implementation of paths.
Package test contains simple test helpers that should not have any dependencies on millennium's packages.
Package test contains simple test helpers that should not have any dependencies on millennium's packages.
db
Package db provides helpers to connect to test databases.
Package db provides helpers to connect to test databases.
trades
Common infrastructure for testing Trades
Common infrastructure for testing Trades
transactions
Package transactions offers common infrastructure for testing Transactions
Package transactions offers common infrastructure for testing Transactions
Package txsub provides the machinery that millennium uses to submit transactions to the aiblocks network and track their progress.
Package txsub provides the machinery that millennium uses to submit transactions to the aiblocks network and track their progress.
sequence
Package sequence providers helpers to manage sequence numbers on behalf of millennium clients.
Package sequence providers helpers to manage sequence numbers on behalf of millennium clients.
Package utf8 contains utilities for working with utf8 data.
Package utf8 contains utilities for working with utf8 data.

Jump to

Keyboard shortcuts

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