state

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2015 License: MPL-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IndexEntry

type IndexEntry struct {
	Key   string
	Value uint64
}

IndexEntry is used with the "index" table for managing the latest Raft index affecting a table.

type NotifyGroup

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

NotifyGroup is used to allow a simple notification mechanism. Channels can be marked as waiting, and when notify is invoked, all the waiting channels get a message and are cleared from the notify list.

func (*NotifyGroup) Clear

func (n *NotifyGroup) Clear(ch chan struct{})

Clear removes a channel from the notify group

func (*NotifyGroup) Empty

func (n *NotifyGroup) Empty() bool

Empty checks if there are no channels to notify

func (*NotifyGroup) Notify

func (n *NotifyGroup) Notify()

Notify will do a non-blocking send to all waiting channels, and clear the notify list

func (*NotifyGroup) Wait

func (n *NotifyGroup) Wait(ch chan struct{})

Wait adds a channel to the notify group

func (*NotifyGroup) WaitCh

func (n *NotifyGroup) WaitCh() chan struct{}

WaitCh allocates a channel that is subscribed to notifications

type StateRestore

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

StateRestore is used to optimize the performance when restoring state by only using a single large transaction instead of thousands of sub transactions

func (*StateRestore) Abort

func (s *StateRestore) Abort()

Abort is used to abort the restore operation

func (*StateRestore) AllocRestore

func (r *StateRestore) AllocRestore(alloc *structs.Allocation) error

AllocRestore is used to restore an allocation

func (*StateRestore) Commit

func (s *StateRestore) Commit()

Commit is used to commit the restore operation

func (*StateRestore) EvalRestore

func (r *StateRestore) EvalRestore(eval *structs.Evaluation) error

EvalRestore is used to restore an evaluation

func (*StateRestore) IndexRestore

func (r *StateRestore) IndexRestore(idx *IndexEntry) error

IndexRestore is used to restore an index

func (*StateRestore) JobRestore

func (r *StateRestore) JobRestore(job *structs.Job) error

JobRestore is used to restore a job

func (*StateRestore) NodeRestore

func (r *StateRestore) NodeRestore(node *structs.Node) error

NodeRestore is used to restore a node

type StateSnapshot

type StateSnapshot struct {
	StateStore
}

StateSnapshot is used to provide a point-in-time snapshot

type StateStore

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

The StateStore is responsible for maintaining all the Nomad state. It is manipulated by the FSM which maintains consistency through the use of Raft. The goals of the StateStore are to provide high concurrency for read operations without blocking writes, and to provide write availability in the face of reads. EVERY object returned as a result of a read against the state store should be considered a constant and NEVER modified in place.

func NewStateStore

func NewStateStore(logOutput io.Writer) (*StateStore, error)

NewStateStore is used to create a new state store

func (*StateStore) AllocByID

func (s *StateStore) AllocByID(id string) (*structs.Allocation, error)

AllocByID is used to lookup an allocation by its ID

func (*StateStore) Allocs

func (s *StateStore) Allocs() (memdb.ResultIterator, error)

Allocs returns an iterator over all the evaluations

func (*StateStore) AllocsByEval

func (s *StateStore) AllocsByEval(evalID string) ([]*structs.Allocation, error)

AllocsByEval returns all the allocations by eval id

func (*StateStore) AllocsByJob

func (s *StateStore) AllocsByJob(jobID string) ([]*structs.Allocation, error)

AllocsByJob returns all the allocations by job id

func (*StateStore) AllocsByNode

func (s *StateStore) AllocsByNode(node string) ([]*structs.Allocation, error)

AllocsByNode returns all the allocations by node

func (*StateStore) DeleteEval

func (s *StateStore) DeleteEval(index uint64, evals []string, allocs []string) error

DeleteEval is used to delete an evaluation

func (*StateStore) DeleteJob

func (s *StateStore) DeleteJob(index uint64, jobID string) error

DeleteJob is used to deregister a job

func (*StateStore) DeleteNode

func (s *StateStore) DeleteNode(index uint64, nodeID string) error

DeleteNode is used to deregister a node

func (*StateStore) EvalByID

func (s *StateStore) EvalByID(id string) (*structs.Evaluation, error)

EvalByID is used to lookup an eval by its ID

func (*StateStore) Evals

func (s *StateStore) Evals() (memdb.ResultIterator, error)

Evals returns an iterator over all the evaluations

func (*StateStore) EvalsByJob

func (s *StateStore) EvalsByJob(jobID string) ([]*structs.Evaluation, error)

EvalsByJob returns all the evaluations by job id

func (*StateStore) Index

func (s *StateStore) Index(name string) (uint64, error)

Index finds the matching index value

func (*StateStore) Indexes

func (s *StateStore) Indexes() (memdb.ResultIterator, error)

Indexes returns an iterator over all the indexes

func (*StateStore) JobByID

func (s *StateStore) JobByID(id string) (*structs.Job, error)

JobByID is used to lookup a job by its ID

func (*StateStore) Jobs

func (s *StateStore) Jobs() (memdb.ResultIterator, error)

Jobs returns an iterator over all the jobs

func (*StateStore) NodeByID

func (s *StateStore) NodeByID(nodeID string) (*structs.Node, error)

NodeByID is used to lookup a node by ID

func (*StateStore) Nodes

func (s *StateStore) Nodes() (memdb.ResultIterator, error)

Nodes returns an iterator over all the nodes

func (*StateStore) Restore

func (s *StateStore) Restore() (*StateRestore, error)

Restore is used to optimize the efficiency of rebuilding state by minimizing the number of transactions and checking overhead.

func (*StateStore) Snapshot

func (s *StateStore) Snapshot() (*StateSnapshot, error)

Snapshot is used to create a point in time snapshot. Because we use MemDB, we just need to snapshot the state of the underlying database.

func (*StateStore) StopWatchAllocs

func (s *StateStore) StopWatchAllocs(node string, notify chan struct{})

StopWatchAllocs is used to unsubscribe a channel from changes in allocations

func (*StateStore) UpdateAllocFromClient

func (s *StateStore) UpdateAllocFromClient(index uint64, alloc *structs.Allocation) error

UpdateAllocFromClient is used to update an allocation based on input from a client. While the schedulers are the authority on the allocation for most things, some updates are authoritative from the client. Specifically, the desired state comes from the schedulers, while the actual state comes from clients.

func (*StateStore) UpdateNodeDrain

func (s *StateStore) UpdateNodeDrain(index uint64, nodeID string, drain bool) error

UpdateNodeDrain is used to update the drain of a node

func (*StateStore) UpdateNodeStatus

func (s *StateStore) UpdateNodeStatus(index uint64, nodeID, status string) error

UpdateNodeStatus is used to update the status of a node

func (*StateStore) UpsertAllocs

func (s *StateStore) UpsertAllocs(index uint64, allocs []*structs.Allocation) error

UpsertAllocs is used to evict a set of allocations and allocate new ones at the same time.

func (*StateStore) UpsertEvals

func (s *StateStore) UpsertEvals(index uint64, evals []*structs.Evaluation) error

UpsertEvaluation is used to upsert an evaluation

func (*StateStore) UpsertJob

func (s *StateStore) UpsertJob(index uint64, job *structs.Job) error

UpsertJob is used to register a job or update a job definition

func (*StateStore) UpsertNode

func (s *StateStore) UpsertNode(index uint64, node *structs.Node) error

UpsertNode is used to register a node or update a node definition This is assumed to be triggered by the client, so we retain the value of drain which is set by the scheduler.

func (*StateStore) WatchAllocs

func (s *StateStore) WatchAllocs(node string, notify chan struct{})

WatchAllocs is used to subscribe a channel to changes in allocations for a node

Jump to

Keyboard shortcuts

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