Documentation ¶
Index ¶
- Constants
- Variables
- func DefaultQueryCtx() (ctx context.Context, cancel context.CancelFunc)
- func GormTransaction(ctx context.Context, db *gorm.DB, fc func(tx *gorm.DB) error, ...) (err error)
- func IsSerializationAnomaly(err error) bool
- func NewEventBroadcaster(uri string, minReconnectInterval time.Duration, ...) *eventBroadcaster
- type AdvisoryLocker
- type Event
- type EventBroadcaster
- type NullAdvisoryLocker
- type Subscription
Constants ¶
const ( AdvisoryLockClassID_EthBroadcaster int32 = 0 AdvisoryLockClassID_JobSpawner int32 = 1 AdvisoryLockClassID_EthConfirmer int32 = 2 // ORM takes lock on 1027321974924625846 which splits into ClassID 239192036, ObjID 2840971190 AdvisoryLockClassID_ORM int32 = 239192036 AdvisoryLockObjectID_EthConfirmer int32 = 0 )
NOTE: All advisory lock class IDs used by the Chainlink application MUST be kept here to avoid accidental re-use
const ( ChannelJobCreated = "insert_on_jobs" ChannelJobDeleted = "delete_from_jobs" ChannelRunStarted = "pipeline_run_started" ChannelRunCompleted = "pipeline_run_completed" // Postgres channel to listen for new eth_txes ChannelInsertOnEthTx = "insert_on_eth_txes" )
const ( // LockTimeout controls the max time we will wait for any kind of database lock. // It's good to set this to _something_ because waiting for locks forever is really bad. LockTimeout = 15 * time.Second // IdleInTxSessionTimeout controls the max time we leave a transaction open and idle. // It's good to set this to _something_ because leaving transactions open forever is really bad. IdleInTxSessionTimeout = 1 * time.Hour )
NOTE: In an ideal world the timeouts below would be set to something sane in the postgres configuration by the user. Since we do not live in an ideal world, it is necessary to override them here.
They cannot easily be set at a session level due to how Go's connection pooling works.
Variables ¶
var ( DefaultSqlTxOptions = sql.TxOptions{ Isolation: sql.LevelReadCommitted, } )
Functions ¶
func DefaultQueryCtx ¶ added in v0.10.2
func DefaultQueryCtx() (ctx context.Context, cancel context.CancelFunc)
DefaultQueryCtx returns a context with a sensible sanity limit timeout for SQL queries
func GormTransaction ¶
func IsSerializationAnomaly ¶
Types ¶
type AdvisoryLocker ¶
type AdvisoryLocker interface { Unlock(ctx context.Context, classID int32, objectID int32) error WithAdvisoryLock(ctx context.Context, classID int32, objectID int32, f func() error) error Close() error }
func NewAdvisoryLock ¶
func NewAdvisoryLock(uri string) AdvisoryLocker
type EventBroadcaster ¶
type EventBroadcaster interface { Start() error Stop() error Subscribe(channel, payloadFilter string) (Subscription, error) Notify(channel string, payload string) error NotifyInsideGormTx(tx *gorm.DB, channel string, payload string) error }
EventBroadcaster opaquely manages a collection of Postgres event listeners and broadcasts events to subscribers (with an optional payload filter).
type NullAdvisoryLocker ¶
type NullAdvisoryLocker struct {
// contains filtered or unexported fields
}
func (*NullAdvisoryLocker) Close ¶
func (n *NullAdvisoryLocker) Close() error
func (*NullAdvisoryLocker) WithAdvisoryLock ¶
type Subscription ¶
type Subscription interface { Events() <-chan Event Close() // contains filtered or unexported methods }
Subscription represents a subscription to a Postgres event channel