Back to godoc.org
go.etcd.io/etcd / lease

Package lease

v3.3.22+incompatible
Latest Go to latest

The latest major version is .

Published: May 20, 2020 | License: Apache-2.0 | Module: go.etcd.io/etcd

Overview

Package lease provides an interface and implementation for time-limited leases over arbitrary resources.

Index

Constants

const MaxLeaseTTL = 9000000000

MaxLeaseTTL is the maximum lease TTL value

const NoLease = LeaseID(0)

NoLease is a special LeaseID representing the absence of a lease.

Variables

var (
	ErrNotPrimary       = errors.New("not a primary lessor")
	ErrLeaseNotFound    = errors.New("lease not found")
	ErrLeaseExists      = errors.New("lease already exists")
	ErrLeaseTTLTooLarge = errors.New("too large lease TTL")
)

type FakeLessor

type FakeLessor struct{}

FakeLessor is a fake implementation of Lessor interface. Used for testing only.

func (*FakeLessor) Attach

func (fl *FakeLessor) Attach(id LeaseID, items []LeaseItem) error

func (*FakeLessor) Demote

func (fl *FakeLessor) Demote()

func (*FakeLessor) Detach

func (fl *FakeLessor) Detach(id LeaseID, items []LeaseItem) error

func (*FakeLessor) ExpiredLeasesC

func (fl *FakeLessor) ExpiredLeasesC() <-chan []*Lease

func (*FakeLessor) GetLease

func (fl *FakeLessor) GetLease(item LeaseItem) LeaseID

func (*FakeLessor) Grant

func (fl *FakeLessor) Grant(id LeaseID, ttl int64) (*Lease, error)

func (*FakeLessor) Leases

func (fl *FakeLessor) Leases() []*Lease

func (*FakeLessor) Lookup

func (fl *FakeLessor) Lookup(id LeaseID) *Lease

func (*FakeLessor) Promote

func (fl *FakeLessor) Promote(extend time.Duration)

func (*FakeLessor) Recover

func (fl *FakeLessor) Recover(b backend.Backend, rd RangeDeleter)

func (*FakeLessor) Renew

func (fl *FakeLessor) Renew(id LeaseID) (int64, error)

func (*FakeLessor) Revoke

func (fl *FakeLessor) Revoke(id LeaseID) error

func (*FakeLessor) SetRangeDeleter

func (fl *FakeLessor) SetRangeDeleter(dr RangeDeleter)

func (*FakeLessor) Stop

func (fl *FakeLessor) Stop()

type Lease

type Lease struct {
	ID LeaseID
	// contains filtered or unexported fields
}

func (*Lease) Keys

func (l *Lease) Keys() []string

Keys returns all the keys attached to the lease.

func (*Lease) Remaining

func (l *Lease) Remaining() time.Duration

Remaining returns the remaining time of the lease.

func (*Lease) TTL

func (l *Lease) TTL() int64

TTL returns the TTL of the Lease.

type LeaseID

type LeaseID int64

type LeaseItem

type LeaseItem struct {
	Key string
}

type Lessor

type Lessor interface {
	// SetRangeDeleter lets the lessor create TxnDeletes to the store.
	// Lessor deletes the items in the revoked or expired lease by creating
	// new TxnDeletes.
	SetRangeDeleter(rd RangeDeleter)

	// Grant grants a lease that expires at least after TTL seconds.
	Grant(id LeaseID, ttl int64) (*Lease, error)
	// Revoke revokes a lease with given ID. The item attached to the
	// given lease will be removed. If the ID does not exist, an error
	// will be returned.
	Revoke(id LeaseID) error

	// Attach attaches given leaseItem to the lease with given LeaseID.
	// If the lease does not exist, an error will be returned.
	Attach(id LeaseID, items []LeaseItem) error

	// GetLease returns LeaseID for given item.
	// If no lease found, NoLease value will be returned.
	GetLease(item LeaseItem) LeaseID

	// Detach detaches given leaseItem from the lease with given LeaseID.
	// If the lease does not exist, an error will be returned.
	Detach(id LeaseID, items []LeaseItem) error

	// Promote promotes the lessor to be the primary lessor. Primary lessor manages
	// the expiration and renew of leases.
	// Newly promoted lessor renew the TTL of all lease to extend + previous TTL.
	Promote(extend time.Duration)

	// Demote demotes the lessor from being the primary lessor.
	Demote()

	// Renew renews a lease with given ID. It returns the renewed TTL. If the ID does not exist,
	// an error will be returned.
	Renew(id LeaseID) (int64, error)

	// Lookup gives the lease at a given lease id, if any
	Lookup(id LeaseID) *Lease

	// Leases lists all leases.
	Leases() []*Lease

	// ExpiredLeasesC returns a chan that is used to receive expired leases.
	ExpiredLeasesC() <-chan []*Lease

	// Recover recovers the lessor state from the given backend and RangeDeleter.
	Recover(b backend.Backend, rd RangeDeleter)

	// Stop stops the lessor for managing leases. The behavior of calling Stop multiple
	// times is undefined.
	Stop()
}

Lessor owns leases. It can grant, revoke, renew and modify leases for lessee.

func NewLessor

func NewLessor(b backend.Backend, minLeaseTTL int64) Lessor

type RangeDeleter

type RangeDeleter func() TxnDelete

RangeDeleter is a TxnDelete constructor.

type TxnDelete

type TxnDelete interface {
	DeleteRange(key, end []byte) (n, rev int64)
	End()
}

TxnDelete is a TxnWrite that only permits deletes. Defined here to avoid circular dependency with mvcc.

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier