stateless

package
v0.0.0-...-8c384fb Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2023 License: Apache-2.0, MIT, Apache-2.0, + 1 more Imports: 16 Imported by: 0

Documentation

Overview

Package stateless implements a PinTracker component for IPFS Cluster, which aims to reduce the memory footprint when handling really large cluster states.

Index

Constants

View Source
const (
	DefaultMaxPinQueueSize       = 1000000
	DefaultConcurrentPins        = 10
	DefaultPriorityPinMaxAge     = 24 * time.Hour
	DefaultPriorityPinMaxRetries = 5
)

Default values for this Config.

Variables

View Source
var (
	// ErrFullQueue is the error used when pin or unpin operation channel is full.
	ErrFullQueue = errors.New("pin/unpin operation queue is full. Try increasing max_pin_queue_size")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	config.Saver

	// If higher, they will automatically marked with an error.
	MaxPinQueueSize int
	// ConcurrentPins specifies how many pin requests can be sent to the ipfs
	// daemon in parallel. If the pinning method is "refs", it might increase
	// speed. Unpin requests are always processed one by one.
	ConcurrentPins int

	// PriorityPinMaxAge specifies the maximum age that a pin needs to
	// can have since it was submitted to the cluster to be pinned
	// preferentially (before pins that are older or have too many retries).
	PriorityPinMaxAge time.Duration

	// PriorityPinMaxRetries specifies the maximum amount of retries that
	// a pin can have before it is moved to a non-prioritary queue.
	PriorityPinMaxRetries int
}

Config allows to initialize a Monitor and customize some parameters.

func (*Config) ApplyEnvVars

func (cfg *Config) ApplyEnvVars() error

ApplyEnvVars fills in any Config fields found as environment variables.

func (*Config) ConfigKey

func (cfg *Config) ConfigKey() string

ConfigKey provides a human-friendly identifier for this type of Config.

func (*Config) Default

func (cfg *Config) Default() error

Default sets the fields of this Config to sensible values.

func (*Config) LoadJSON

func (cfg *Config) LoadJSON(raw []byte) error

LoadJSON sets the fields of this Config to the values defined by the JSON representation of it, as generated by ToJSON.

func (*Config) ToDisplayJSON

func (cfg *Config) ToDisplayJSON() ([]byte, error)

ToDisplayJSON returns JSON config as a string.

func (*Config) ToJSON

func (cfg *Config) ToJSON() ([]byte, error)

ToJSON generates a human-friendly JSON representation of this Config.

func (*Config) Validate

func (cfg *Config) Validate() error

Validate checks that the fields of this Config have working values, at least in appearance.

type Tracker

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

Tracker uses the optracker.OperationTracker to manage transitioning shared rep-mgr state (Pins) to the local IPFS node.

func New

func New(cfg *Config, pid peer.ID, peerName string, getState func(ctx context.Context) (state.ReadOnly, error)) *Tracker

New creates a new StatelessPinTracker.

func (*Tracker) GetPinFromState

func (spt *Tracker) GetPinFromState(ctx context.Context, c api.Cid) api.Pin

func (*Tracker) OpContext

func (spt *Tracker) OpContext(ctx context.Context, c api.Cid) context.Context

OpContext exports the internal optracker's OpContext method. For testing purposes only.

func (*Tracker) PinCallback

func (spt *Tracker) PinCallback(ctx context.Context, cid api.Cid, peerId string, isPinned bool) error

func (*Tracker) PinQueueSize

func (spt *Tracker) PinQueueSize(ctx context.Context) (int64, error)

PinQueueSize returns the current size of the pinning queue.

func (*Tracker) Recover

func (spt *Tracker) Recover(ctx context.Context, c api.Cid) (api.PinInfo, error)

Recover will trigger pinning or unpinning for items in PinError or UnpinError states.

func (*Tracker) RecoverAll

func (spt *Tracker) RecoverAll(ctx context.Context, out chan<- api.PinInfo) error

RecoverAll attempts to recover all items tracked by this peer. It returns any errors or when it is done re-tracking.

func (*Tracker) SetClient

func (spt *Tracker) SetClient(c *rpc.Client)

SetClient makes the StatelessPinTracker ready to perform RPC requests to other components.

func (*Tracker) Shutdown

func (spt *Tracker) Shutdown(ctx context.Context) error

Shutdown finishes the services provided by the StatelessPinTracker and cancels any active context.

func (*Tracker) Status

func (spt *Tracker) Status(ctx context.Context, c api.Cid) api.PinInfo

Status returns information for a Cid pinned to the local IPFS node.

func (*Tracker) StatusAll

func (spt *Tracker) StatusAll(ctx context.Context, filter api.TrackerStatus, out chan<- api.PinInfo) error

StatusAll returns information for all Cids pinned to the local IPFS node.

func (*Tracker) Track

func (spt *Tracker) Track(ctx context.Context, c api.Pin) error

Track tells the StatelessPinTracker to start managing a Cid, possibly triggering Pin operations on the IPFS daemon.

func (*Tracker) Untrack

func (spt *Tracker) Untrack(ctx context.Context, c api.Cid) error

Untrack tells the StatelessPinTracker to stop managing a Cid. If the Cid is pinned locally, it will be unpinned.

Jump to

Keyboard shortcuts

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