package crdbqm

import "github.com/google/trillian/quota/crdbqm"

Package crdbqm defines a CockroachDB-based quota.Manager implementation.

Index

Constants

const (
	// DefaultMaxUnsequenced is a suggested value for MaxUnsequencedRows.
	// Note that this is a Global/Write quota suggestion, so it applies across trees.
	DefaultMaxUnsequenced = 500000 // About 2h of non-stop signing at 70QPS.

)
const QuotaManagerName = "crdb"

QuotaManagerName identifies the CockroachDB quota implementation.

Variables

var ErrTooManyUnsequencedRows = errors.New("too many unsequenced rows")

ErrTooManyUnsequencedRows is returned when tokens are requested but Unsequenced has grown beyond the configured limit.

Types

type QuotaManager

type QuotaManager struct {
	DB                 *sql.DB
	MaxUnsequencedRows int
}

QuotaManager is a CockroachDB-based quota.Manager implementation.

QuotaManager only implements Global/Write quotas, which is based on the number of Unsequenced rows (to be exact, tokens = MaxUnsequencedRows - actualUnsequencedRows). Other quotas are considered infinite.

func (*QuotaManager) GetTokens

func (m *QuotaManager) GetTokens(ctx context.Context, numTokens int, specs []quota.Spec) error

GetTokens implements quota.Manager.GetTokens. It doesn't actually reserve or retrieve tokens, instead it allows access based on the number of rows in the Unsequenced table.

func (*QuotaManager) PutTokens

func (m *QuotaManager) PutTokens(ctx context.Context, numTokens int, specs []quota.Spec) error

PutTokens implements quota.Manager.PutTokens. It's a noop for QuotaManager.

func (*QuotaManager) ResetQuota

func (m *QuotaManager) ResetQuota(ctx context.Context, specs []quota.Spec) error

ResetQuota implements quota.Manager.ResetQuota. It's a noop for QuotaManager.

Source Files

crdb_quota.go quota_provider.go

Version
v1.7.1 (latest)
Published
Jan 9, 2025
Platform
linux/amd64
Imports
7 packages
Last checked
1 month ago

Tools for package owners.