Documentation ¶
Index ¶
- Constants
- Variables
- func GormTransaction(ctx context.Context, db *gorm.DB, fc func(tx *gorm.DB) error, ...) (err error)
- func IsRecordNotFound(err error) bool
- func IsSerializationAnomaly(err error) bool
- func NewEventBroadcaster(uri string, minReconnectInterval time.Duration, ...) *eventBroadcaster
- type AdvisoryLocker
- type Event
- type EventBroadcaster
- type NullAdvisoryLocker
- func (n *NullAdvisoryLocker) Close() error
- func (*NullAdvisoryLocker) TryLock(ctx context.Context, classID int32, objectID int32) (err error)
- func (*NullAdvisoryLocker) Unlock(ctx context.Context, classID int32, objectID int32) error
- func (*NullAdvisoryLocker) WithAdvisoryLock(ctx context.Context, classID int32, objectID int32, f func() error) error
- type Subscription
Constants ¶
View Source
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
View Source
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" )
Variables ¶
View Source
var ( DefaultSqlTxOptions = sql.TxOptions{ Isolation: sql.LevelReadCommitted, } )
Functions ¶
func GormTransaction ¶
func IsRecordNotFound ¶
func IsSerializationAnomaly ¶
Types ¶
type AdvisoryLocker ¶
type AdvisoryLocker interface { TryLock(ctx context.Context, classID int32, objectID int32) (err error) 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
Source Files ¶
Click to show internal directories.
Click to hide internal directories.