satellitedb

package
v1.106.1 Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2024 License: AGPL-3.0 Imports: 67 Imported by: 4

Documentation

Index

Constants

View Source
const RepairQueueSelectLimit = 1000

RepairQueueSelectLimit defines how many items can be selected at the same time.

View Source
const (
	// VerifyRetryInterval defines a limit on how frequently we retry
	// verification audits. At least this long should elapse between
	// attempts.
	VerifyRetryInterval = 4 * time.Hour
)

Variables

View Source
var (
	// ErrMigrate is for tracking migration errors.
	ErrMigrate = errs.Class("migrate")
	// ErrMigrateMinVersion is for migration min version errors.
	ErrMigrateMinVersion = errs.Class("migrate min version")
)
View Source
var (
	// ErrDifferentStorageNodes is returned when ProcessOrders gets orders from different storage nodes.
	ErrDifferentStorageNodes = errs.Class("different storage nodes")
	// ErrBucketFromSerial is returned when there is an error trying to get the bucket name from the serial number.
	ErrBucketFromSerial = errs.Class("bucket from serial number")
	// ErrUpdateBucketBandwidthSettle is returned when there is an error updating bucket bandwidth.
	ErrUpdateBucketBandwidthSettle = errs.Class("update bucket bandwidth settle")
	// ErrProcessOrderWithWindowTx is returned when there is an error with the ProcessOrders transaction.
	ErrProcessOrderWithWindowTx = errs.Class("process order with window transaction")
	// ErrGetStoragenodeBandwidthInWindow is returned when there is an error getting all storage node bandwidth for a window.
	ErrGetStoragenodeBandwidthInWindow = errs.Class("get storagenode bandwidth in window")
	// ErrCreateStoragenodeBandwidth is returned when there is an error updating storage node bandwidth.
	ErrCreateStoragenodeBandwidth = errs.Class("create storagenode bandwidth")
)
View Source
var (
	// ErrVetting is the error class for the following test methods.
	ErrVetting = errs.Class("vetting")
)
View Source
var Error = errs.Class("satellitedb")

Error is the default satellitedb errs class.

Functions

func Open added in v1.17.1

func Open(ctx context.Context, log *zap.Logger, databaseURL string, opts Options) (rv satellite.DB, err error)

Open creates instance of satellite.DB.

func ProjectFromDBX added in v1.106.1

func ProjectFromDBX(ctx context.Context, project *dbx.Project) (_ *console.Project, err error)

ProjectFromDBX is used for creating Project entity from autogenerated dbx.Project struct.

func SettledAmountsMatch added in v1.8.1

func SettledAmountsMatch(rows []*dbx.StoragenodeBandwidthRollup, orderActionAmounts map[int32]int64) bool

SettledAmountsMatch checks if database rows match the orders. If the settled amount for each action are not the same then false is returned.

func SortBandwidthRollupKeys added in v1.106.1

func SortBandwidthRollupKeys(bandwidthRollupKeys []BandwidthRollupKey)

SortBandwidthRollupKeys sorts bandwidth rollups.

func UserFromDBX added in v1.106.1

func UserFromDBX(ctx context.Context, user *dbx.User) (_ *console.User, err error)

UserFromDBX is used for creating User entity from autogenerated dbx.User struct.

Types

type BandwidthRollupKey added in v1.106.1

type BandwidthRollupKey struct {
	BucketName    string
	ProjectID     uuid.UUID
	IntervalStart int64
	Action        pb.PieceAction
}

BandwidthRollupKey is used to collect data for a query.

type ConsoleDB

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

ConsoleDB contains access to different satellite databases.

func (*ConsoleDB) APIKeys

func (db *ConsoleDB) APIKeys() console.APIKeys

APIKeys is a getter for APIKeys repository.

func (*ConsoleDB) AccountFreezeEvents added in v1.70.1

func (db *ConsoleDB) AccountFreezeEvents() console.AccountFreezeEvents

AccountFreezeEvents is a getter for AccountFreezeEvents repository.

func (*ConsoleDB) ProjectInvitations added in v1.79.1

func (db *ConsoleDB) ProjectInvitations() console.ProjectInvitations

ProjectInvitations is a getter for ProjectInvitations repository.

func (*ConsoleDB) ProjectMembers

func (db *ConsoleDB) ProjectMembers() console.ProjectMembers

ProjectMembers is a getter for ProjectMembers repository.

func (*ConsoleDB) Projects

func (db *ConsoleDB) Projects() console.Projects

Projects is a getter for Projects repository.

func (*ConsoleDB) RegistrationTokens

func (db *ConsoleDB) RegistrationTokens() console.RegistrationTokens

RegistrationTokens is a getter for RegistrationTokens repository.

func (*ConsoleDB) ResetPasswordTokens added in v0.12.0

func (db *ConsoleDB) ResetPasswordTokens() console.ResetPasswordTokens

ResetPasswordTokens is a getter for ResetPasswordTokens repository.

func (*ConsoleDB) Users

func (db *ConsoleDB) Users() console.Users

Users is getter a for Users repository.

func (*ConsoleDB) WebappSessions added in v1.56.1

func (db *ConsoleDB) WebappSessions() consoleauth.WebappSessions

WebappSessions is a getter for WebappSessions repository.

func (*ConsoleDB) WithTx added in v0.29.1

func (db *ConsoleDB) WithTx(ctx context.Context, fn func(context.Context, console.DBTx) error) error

WithTx is a method for executing and retrying transaction.

type DBTx

type DBTx struct {
	*ConsoleDB
}

DBTx extends Database with transaction scope.

func (*DBTx) Commit

func (db *DBTx) Commit() error

Commit is a method for committing and closing transaction.

func (*DBTx) Rollback

func (db *DBTx) Rollback() error

Rollback is a method for rollback and closing transaction.

type Options added in v0.29.4

type Options struct {
	ApplicationName      string
	APIKeysLRUOptions    lrucache.Options
	RevocationLRUOptions lrucache.Options

	// How many storage node rollups to save/read in one batch.
	SaveRollupBatchSize int
	ReadRollupBatchSize int
}

Options includes options for how a satelliteDB runs.

type ProjectAccounting added in v0.12.0

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

ProjectAccounting implements the accounting/db ProjectAccounting interface.

func (*ProjectAccounting) ArchiveRollupsBefore added in v1.22.1

func (db *ProjectAccounting) ArchiveRollupsBefore(ctx context.Context, before time.Time, batchSize int) (archivedCount int, err error)

ArchiveRollupsBefore archives rollups older than a given time.

func (*ProjectAccounting) CreateStorageTally added in v0.12.0

func (db *ProjectAccounting) CreateStorageTally(ctx context.Context, tally accounting.BucketStorageTally) (err error)

CreateStorageTally creates a record in the bucket_storage_tallies accounting table.

func (*ProjectAccounting) DeleteProjectBandwidthBefore added in v1.31.1

func (db *ProjectAccounting) DeleteProjectBandwidthBefore(ctx context.Context, before time.Time) (err error)

DeleteProjectBandwidthBefore deletes project bandwidth rollups before the given time.

func (*ProjectAccounting) GetArchivedRollupsSince added in v1.22.1

func (db *ProjectAccounting) GetArchivedRollupsSince(ctx context.Context, since time.Time) (bwRollups []orders.BucketBandwidthRollup, err error)

GetArchivedRollupsSince retrieves all archived rollup records since a given time.

func (*ProjectAccounting) GetBucketTotals added in v0.26.0

func (db *ProjectAccounting) GetBucketTotals(ctx context.Context, projectID uuid.UUID, cursor accounting.BucketUsageCursor, before time.Time) (_ *accounting.BucketUsagePage, err error)

GetBucketTotals retrieves bucket usage totals for period of time.

func (*ProjectAccounting) GetBucketUsageRollups added in v0.26.0

func (db *ProjectAccounting) GetBucketUsageRollups(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ []accounting.BucketUsageRollup, err error)

GetBucketUsageRollups retrieves summed usage rollups for every bucket of particular project for a given period.

func (*ProjectAccounting) GetNonEmptyTallyBucketsInRange added in v1.81.2

func (db *ProjectAccounting) GetNonEmptyTallyBucketsInRange(ctx context.Context, from, to metabase.BucketLocation, asOfSystemInterval time.Duration) (result []metabase.BucketLocation, err error)

GetNonEmptyTallyBucketsInRange returns a list of bucket locations within the given range whose most recent tally does not represent empty usage.

func (*ProjectAccounting) GetProjectBandwidth added in v1.31.1

func (db *ProjectAccounting) GetProjectBandwidth(ctx context.Context, projectID uuid.UUID, year int, month time.Month, day int, asOfSystemInterval time.Duration) (_ int64, err error)

GetProjectBandwidth returns the used bandwidth (settled or allocated) for the specified year, month and day.

func (*ProjectAccounting) GetProjectBandwidthLimit added in v0.27.0

func (db *ProjectAccounting) GetProjectBandwidthLimit(ctx context.Context, projectID uuid.UUID) (_ *int64, err error)

GetProjectBandwidthLimit returns project bandwidth usage limit.

func (*ProjectAccounting) GetProjectDailyBandwidth added in v1.31.1

func (db *ProjectAccounting) GetProjectDailyBandwidth(ctx context.Context, projectID uuid.UUID, year int, month time.Month, day int) (allocated int64, settled, dead int64, err error)

GetProjectDailyBandwidth returns project bandwidth (allocated and settled) for the specified day.

func (*ProjectAccounting) GetProjectDailyUsageByDateRange added in v1.49.3

func (db *ProjectAccounting) GetProjectDailyUsageByDateRange(ctx context.Context, projectID uuid.UUID, from, to time.Time, crdbInterval time.Duration) (_ *accounting.ProjectDailyUsage, err error)

GetProjectDailyUsageByDateRange returns project daily allocated, settled bandwidth and storage usage by specific date range.

func (*ProjectAccounting) GetProjectLimits added in v1.14.1

func (db *ProjectAccounting) GetProjectLimits(ctx context.Context, projectID uuid.UUID) (_ accounting.ProjectLimits, err error)

GetProjectLimits returns all project limits including user specified usage and bandwidth limits.

func (*ProjectAccounting) GetProjectObjectsSegments added in v1.45.2

func (db *ProjectAccounting) GetProjectObjectsSegments(ctx context.Context, projectID uuid.UUID) (objectsSegments accounting.ProjectObjectsSegments, err error)

GetProjectObjectsSegments returns project objects and segments number.

func (*ProjectAccounting) GetProjectSegmentLimit added in v1.45.2

func (db *ProjectAccounting) GetProjectSegmentLimit(ctx context.Context, projectID uuid.UUID) (_ *int64, err error)

GetProjectSegmentLimit returns project segment limit.

func (*ProjectAccounting) GetProjectSettledBandwidth added in v1.83.2

func (db *ProjectAccounting) GetProjectSettledBandwidth(ctx context.Context, projectID uuid.UUID, year int, month time.Month, asOfSystemInterval time.Duration) (_ int64, err error)

GetProjectSettledBandwidth returns the used settled bandwidth for the specified year and month.

func (*ProjectAccounting) GetProjectSettledBandwidthTotal added in v1.71.1

func (db *ProjectAccounting) GetProjectSettledBandwidthTotal(ctx context.Context, projectID uuid.UUID, from time.Time) (_ int64, err error)

GetProjectSettledBandwidthTotal returns the sum of GET bandwidth usage settled for a projectID in the past time frame.

func (*ProjectAccounting) GetProjectStorageLimit added in v0.27.0

func (db *ProjectAccounting) GetProjectStorageLimit(ctx context.Context, projectID uuid.UUID) (_ *int64, err error)

GetProjectStorageLimit returns project storage usage limit.

func (*ProjectAccounting) GetProjectTotal added in v0.26.0

func (db *ProjectAccounting) GetProjectTotal(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ *accounting.ProjectUsage, err error)

GetProjectTotal retrieves project usage for a given period.

func (*ProjectAccounting) GetProjectTotalByPartner added in v1.74.1

func (db *ProjectAccounting) GetProjectTotalByPartner(ctx context.Context, projectID uuid.UUID, partnerNames []string, since, before time.Time) (usages map[string]accounting.ProjectUsage, err error)

GetProjectTotalByPartner retrieves project usage for a given period categorized by partner name. Unpartnered usage or usage for a partner not present in partnerNames is mapped to the empty string.

func (*ProjectAccounting) GetRollupsSince added in v1.22.1

func (db *ProjectAccounting) GetRollupsSince(ctx context.Context, since time.Time) (bwRollups []orders.BucketBandwidthRollup, err error)

GetRollupsSince retrieves all archived rollup records since a given time.

func (*ProjectAccounting) GetSingleBucketUsageRollup added in v1.51.1

func (db *ProjectAccounting) GetSingleBucketUsageRollup(ctx context.Context, projectID uuid.UUID, bucket string, since, before time.Time) (_ *accounting.BucketUsageRollup, err error)

GetSingleBucketUsageRollup retrieves usage rollup for a single bucket of particular project for a given period.

func (*ProjectAccounting) GetTallies added in v0.21.0

func (db *ProjectAccounting) GetTallies(ctx context.Context) (tallies []accounting.BucketTally, err error)

GetTallies retrieves all tallies ordered by interval start (descending).

func (*ProjectAccounting) SaveTallies added in v0.12.0

func (db *ProjectAccounting) SaveTallies(ctx context.Context, intervalStart time.Time, bucketTallies map[metabase.BucketLocation]*accounting.BucketTally) (err error)

SaveTallies saves the latest bucket info.

func (*ProjectAccounting) UpdateProjectBandwidthLimit added in v1.4.3

func (db *ProjectAccounting) UpdateProjectBandwidthLimit(ctx context.Context, projectID uuid.UUID, limit memory.Size) (err error)

UpdateProjectBandwidthLimit updates project bandwidth limit.

func (*ProjectAccounting) UpdateProjectSegmentLimit added in v1.45.2

func (db *ProjectAccounting) UpdateProjectSegmentLimit(ctx context.Context, projectID uuid.UUID, limit int64) (err error)

UpdateProjectSegmentLimit updates project segment limit.

func (*ProjectAccounting) UpdateProjectUsageLimit added in v0.27.0

func (db *ProjectAccounting) UpdateProjectUsageLimit(ctx context.Context, projectID uuid.UUID, limit memory.Size) (err error)

UpdateProjectUsageLimit updates project usage limit.

type StoragenodeAccounting added in v0.12.0

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

StoragenodeAccounting implements the accounting/db StoragenodeAccounting interface.

func (*StoragenodeAccounting) ArchiveRollupsBefore added in v1.22.1

func (db *StoragenodeAccounting) ArchiveRollupsBefore(ctx context.Context, before time.Time, batchSize int) (nodeRollupsDeleted int, err error)

ArchiveRollupsBefore archives rollups older than a given time.

func (*StoragenodeAccounting) DeleteTalliesBefore added in v0.12.0

func (db *StoragenodeAccounting) DeleteTalliesBefore(ctx context.Context, latestRollup time.Time, batchSize int) (err error)

DeleteTalliesBefore deletes all raw tallies prior to some time.

func (*StoragenodeAccounting) GetArchivedRollupsSince added in v1.22.1

func (db *StoragenodeAccounting) GetArchivedRollupsSince(ctx context.Context, since time.Time) (bwRollups []accounting.StoragenodeBandwidthRollup, err error)

GetArchivedRollupsSince retrieves all archived bandwidth rollup records since a given time.

func (*StoragenodeAccounting) GetBandwidthSince added in v0.12.0

func (db *StoragenodeAccounting) GetBandwidthSince(ctx context.Context, latestRollup time.Time,
	cb func(context.Context, *accounting.StoragenodeBandwidthRollup) error) (err error)

GetBandwidthSince retrieves all storagenode_bandwidth_rollup entires since latestRollup.

func (*StoragenodeAccounting) GetRollupsSince added in v1.22.1

func (db *StoragenodeAccounting) GetRollupsSince(ctx context.Context, since time.Time) (bwRollups []accounting.StoragenodeBandwidthRollup, err error)

GetRollupsSince retrieves all archived bandwidth rollup records since a given time.

func (*StoragenodeAccounting) GetTallies added in v0.12.0

GetTallies retrieves all raw tallies.

func (*StoragenodeAccounting) GetTalliesSince added in v0.12.0

func (db *StoragenodeAccounting) GetTalliesSince(ctx context.Context, latestRollup time.Time) (_ []*accounting.StoragenodeStorageTally, err error)

GetTalliesSince retrieves all raw tallies since latestRollup.

func (*StoragenodeAccounting) LastTimestamp added in v0.12.0

func (db *StoragenodeAccounting) LastTimestamp(ctx context.Context, timestampType string) (_ time.Time, err error)

LastTimestamp records the greatest last tallied time.

func (*StoragenodeAccounting) QueryPaymentInfo added in v0.12.0

func (db *StoragenodeAccounting) QueryPaymentInfo(ctx context.Context, start time.Time, end time.Time) (_ []*accounting.CSVRow, err error)

QueryPaymentInfo queries Overlay, Accounting Rollup on nodeID.

func (*StoragenodeAccounting) QueryStorageNodePeriodUsage added in v1.1.1

func (db *StoragenodeAccounting) QueryStorageNodePeriodUsage(ctx context.Context, period compensation.Period) (_ []accounting.StorageNodePeriodUsage, err error)

QueryStorageNodePeriodUsage returns usage invoices for nodes for a compensation period.

func (*StoragenodeAccounting) QueryStorageNodeUsage added in v0.18.0

func (db *StoragenodeAccounting) QueryStorageNodeUsage(ctx context.Context, nodeID storj.NodeID, start time.Time, end time.Time) (_ []accounting.StorageNodeUsage, err error)

QueryStorageNodeUsage returns slice of StorageNodeUsage for given period.

func (*StoragenodeAccounting) SaveRollup added in v0.12.0

func (db *StoragenodeAccounting) SaveRollup(ctx context.Context, latestRollup time.Time, stats accounting.RollupStats) (err error)

SaveRollup records raw tallies of at rest data to the database.

func (*StoragenodeAccounting) SaveTallies added in v0.12.0

func (db *StoragenodeAccounting) SaveTallies(ctx context.Context, latestTally time.Time, nodeIDs []storj.NodeID, totals []float64) (err error)

SaveTallies records raw tallies of at rest data to the database.

Directories

Path Synopsis
dbx
gen

Jump to

Keyboard shortcuts

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