statestore

package
v1.8.1 Latest Latest
Warning

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

Go to latest
Published: Dec 8, 2023 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetRedisPool added in v1.0.0

func GetRedisPool(cfg config.View) *redis.Pool

GetRedisPool configures a new pool to connect to redis given the config.

Types

type RedisLocker added in v1.2.0

type RedisLocker interface {
	Lock(ctx context.Context) error
	Unlock(ctx context.Context) (bool, error)
}

RedisLocker provides methods to use distributed locks against redis

type Service

type Service interface {
	// HealthCheck indicates if the database is reachable.
	HealthCheck(ctx context.Context) error

	// Closes the connection to the underlying storage.
	Close() error

	// CreateTicket creates a new Ticket in the state storage. If the id already exists, it will be overwritten.
	CreateTicket(ctx context.Context, ticket *pb.Ticket) error

	// GetTicket gets the Ticket with the specified id from state storage.
	// This method fails if the Ticket does not exist.
	GetTicket(ctx context.Context, id string) (*pb.Ticket, error)

	// DeleteTicket removes the Ticket with the specified id from state storage.
	// This method succeeds if the Ticket does not exist.
	DeleteTicket(ctx context.Context, id string) error

	// IndexTicket adds the ticket to the index.
	IndexTicket(ctx context.Context, ticket *pb.Ticket) error

	// DeindexTicket removes specified ticket from the index. The Ticket continues to exist.
	DeindexTicket(ctx context.Context, id string) error

	// GetIndexedIDSet returns the ids of all tickets currently indexed.
	GetIndexedIDSet(ctx context.Context) (map[string]struct{}, error)

	// GetTickets returns multiple tickets from storage.
	// Missing tickets are silently ignored.
	GetTickets(ctx context.Context, ids []string) ([]*pb.Ticket, error)

	// UpdateAssignments update using the request's specified tickets with assignments.
	UpdateAssignments(ctx context.Context, req *pb.AssignTicketsRequest) (*pb.AssignTicketsResponse, []*pb.Ticket, error)

	// GetAssignments returns the assignment associated with the input ticket id.
	GetAssignments(ctx context.Context, id string, callback func(*pb.Assignment) error) error

	// AddTicketsToPendingRelease appends new proposed tickets to the proposed sorted set with current timestamp.
	AddTicketsToPendingRelease(ctx context.Context, ids []string) error

	// DeleteTicketsFromPendingRelease deletes tickets from the proposed sorted set.
	DeleteTicketsFromPendingRelease(ctx context.Context, ids []string) error

	// ReleaseAllTickets releases all pending tickets back to active.
	ReleaseAllTickets(ctx context.Context) error

	// CreateBackfill creates a new Backfill in the state storage if one doesn't exist.
	// The xids algorithm used to create the ids ensures that they are unique with no system wide synchronization.
	// Calling clients are forbidden from choosing an id during create. So no conflicts will occur.
	CreateBackfill(ctx context.Context, backfill *pb.Backfill, ticketIDs []string) error

	// GetBackfill gets the Backfill with the specified id from state storage.
	// This method fails if the Backfill does not exist.
	// Returns the Backfill and associated ticketIDs if they exist.
	GetBackfill(ctx context.Context, id string) (*pb.Backfill, []string, error)

	// GetBackfills returns multiple backfills from storage
	GetBackfills(ctx context.Context, ids []string) ([]*pb.Backfill, error)

	// DeleteBackfill removes the Backfill with the specified id from state storage.
	// This method succeeds if the Backfill does not exist.
	DeleteBackfill(ctx context.Context, id string) error

	// DeleteBackfillCompletely performs a set of operations to remove backfill and all related entities.
	DeleteBackfillCompletely(ctx context.Context, id string) error

	// UpdateBackfill updates an existing Backfill with a new data. ticketIDs can be nil.
	UpdateBackfill(ctx context.Context, backfill *pb.Backfill, ticketIDs []string) error

	// NewMutex returns an interface of a new distributed mutex with given name
	NewMutex(key string) RedisLocker

	// CleanupBackfills removes expired backfills
	CleanupBackfills(ctx context.Context) error

	// UpdateAcknowledgmentTimestamp updates Backfill's last acknowledged time
	UpdateAcknowledgmentTimestamp(ctx context.Context, id string) error

	// GetExpiredBackfillIDs gets all backfill IDs which are expired
	GetExpiredBackfillIDs(ctx context.Context) ([]string, error)

	// IndexBackfill adds the backfill to the index.
	IndexBackfill(ctx context.Context, backfill *pb.Backfill) error

	// DeindexBackfill removes specified Backfill ID from the index. The Backfill continues to exist.
	DeindexBackfill(ctx context.Context, id string) error

	// GetIndexedBackfills returns a map containing the IDs and
	// the Generation number of the backfills currently indexed.
	GetIndexedBackfills(ctx context.Context) (map[string]int, error)
}

Service is a generic interface for talking to a storage backend.

func New

func New(cfg config.View) Service

New creates a Service based on the configuration.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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