piecestore

package
v1.28.2 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2021 License: AGPL-3.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrVerifyNotAuthorized is returned when the one submitting the action is not authorized to perform that action.
	ErrVerifyNotAuthorized = errs.Class("not authorized")
	// ErrVerifyUntrusted is returned when action is not trusted.
	ErrVerifyUntrusted = errs.Class("untrusted")
	// ErrVerifyDuplicateRequest is returned when serial number has been already used to submit an action.
	ErrVerifyDuplicateRequest = errs.Class("duplicate request")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	DatabaseDir             string        `help:"directory to store databases. if empty, uses data path" default:""`
	ExpirationGracePeriod   time.Duration `help:"how soon before expiration date should things be considered expired" default:"48h0m0s"`
	MaxConcurrentRequests   int           `help:"how many concurrent requests are allowed, before uploads are rejected. 0 represents unlimited." default:"0"`
	DeleteWorkers           int           `help:"how many piece delete workers" default:"1"`
	DeleteQueueSize         int           `help:"size of the piece delete queue" default:"10000"`
	OrderLimitGracePeriod   time.Duration `help:"how long after OrderLimit creation date are OrderLimits no longer accepted" default:"1h0m0s"`
	CacheSyncInterval       time.Duration `help:"how often the space used cache is synced to persistent storage" releaseDefault:"1h0m0s" devDefault:"0h1m0s"`
	StreamOperationTimeout  time.Duration `help:"how long to spend waiting for a stream operation before canceling" default:"30m"`
	RetainTimeBuffer        time.Duration `help:"allows for small differences in the satellite and storagenode clocks" default:"48h0m0s"`
	ReportCapacityThreshold memory.Size   `help:"threshold below which to immediately notify satellite of capacity" default:"500MB" hidden:"true"`
	MaxUsedSerialsSize      memory.Size   `help:"amount of memory allowed for used serials store - once surpassed, serials will be dropped at random" default:"1MB"`

	Trust trust.Config

	Monitor monitor.Config
	Orders  orders.Config
}

Config defines parameters for piecestore endpoint.

type Endpoint

type Endpoint struct {
	pb.DRPCContactUnimplementedServer
	// contains filtered or unexported fields
}

Endpoint implements uploading, downloading and deleting for a storage node..

architecture: Endpoint

func NewEndpoint

func NewEndpoint(log *zap.Logger, signer signing.Signer, trust *trust.Pool, monitor *monitor.Service, retain *retain.Service, pingStats pingStatsSource, store *pieces.Store, pieceDeleter *pieces.Deleter, ordersStore *orders.FileStore, usage bandwidth.DB, usedSerials *usedserials.Table, config Config) (*Endpoint, error)

NewEndpoint creates a new piecestore endpoint.

func (*Endpoint) Delete deprecated

func (endpoint *Endpoint) Delete(ctx context.Context, delete *pb.PieceDeleteRequest) (_ *pb.PieceDeleteResponse, err error)

Delete handles deleting a piece on piece store requested by uplink.

Deprecated: use DeletePieces instead.

func (*Endpoint) DeletePieces added in v0.28.4

func (endpoint *Endpoint) DeletePieces(
	ctx context.Context, req *pb.DeletePiecesRequest,
) (_ *pb.DeletePiecesResponse, err error)

DeletePieces delete a list of pieces on satellite request.

func (*Endpoint) Download

func (endpoint *Endpoint) Download(stream pb.DRPCPiecestore_DownloadStream) (err error)

Download handles Downloading a piece on piecestore.

func (*Endpoint) IsExpired

func (endpoint *Endpoint) IsExpired(expiration time.Time) bool

IsExpired checks whether the date has already expired (with a threshold) at the time of calling this function.

func (*Endpoint) RestoreTrash added in v0.27.0

func (endpoint *Endpoint) RestoreTrash(ctx context.Context, restoreTrashReq *pb.RestoreTrashRequest) (res *pb.RestoreTrashResponse, err error)

RestoreTrash restores all trashed items for the satellite issuing the call.

func (*Endpoint) Retain added in v0.15.0

func (endpoint *Endpoint) Retain(ctx context.Context, retainReq *pb.RetainRequest) (res *pb.RetainResponse, err error)

Retain keeps only piece ids specified in the request.

func (*Endpoint) TestLiveRequestCount added in v0.21.0

func (endpoint *Endpoint) TestLiveRequestCount() int32

TestLiveRequestCount returns the current number of live requests.

func (*Endpoint) Upload

func (endpoint *Endpoint) Upload(stream pb.DRPCPiecestore_UploadStream) (err error)

Upload handles uploading a piece on piece store.

func (*Endpoint) VerifyOrder

func (endpoint *Endpoint) VerifyOrder(ctx context.Context, limit *pb.OrderLimit, order *pb.Order, largestOrderAmount int64) (err error)

VerifyOrder verifies that the order corresponds to the order limit and has all the necessary fields.

func (*Endpoint) VerifyOrderLimitSignature

func (endpoint *Endpoint) VerifyOrderLimitSignature(ctx context.Context, limit *pb.OrderLimit) (err error)

VerifyOrderLimitSignature verifies that the order limit signature is valid.

func (*Endpoint) VerifyPieceHash

func (endpoint *Endpoint) VerifyPieceHash(ctx context.Context, limit *pb.OrderLimit, hash *pb.PieceHash, expectedHash []byte) (err error)

VerifyPieceHash verifies whether the piece hash is properly signed and matches the locally computed hash.

type OldConfig added in v0.11.0

type OldConfig struct {
	Path                   string         `help:"path to store data in" default:"$CONFDIR/storage"`
	WhitelistedSatellites  storj.NodeURLs `help:"a comma-separated list of approved satellite node urls (unused)" devDefault:"" releaseDefault:""`
	AllocatedDiskSpace     memory.Size    `user:"true" help:"total allocated disk space in bytes" default:"1TB"`
	AllocatedBandwidth     memory.Size    `user:"true" help:"total allocated bandwidth in bytes (deprecated)" default:"0B"`
	KBucketRefreshInterval time.Duration  `help:"how frequently Kademlia bucket should be refreshed with node stats" default:"1h0m0s"`
}

OldConfig contains everything necessary for a server.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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