juju: github.com/juju/juju/worker/lease/manifold Index | Files

package manifold

import "github.com/juju/juju/worker/lease/manifold"

Index

Package Files

manifold.go

Constants

const (
    // MaxSleep is the longest the manager will sleep before checking
    // whether any leases should be expired. If it can see a lease
    // expiring sooner than that it will still wake up earlier.
    MaxSleep = time.Minute

    // ForwardTimeout is how long the store should wait for a response
    // after sending a lease operation over the hub before deciding a
    // a response is never coming back (for example if we send the
    // request during a raft-leadership election). This should be long
    // enough that we can be very confident the request was missed.
    ForwardTimeout = 5 * time.Second
)

func Manifold Uses

func Manifold(config ManifoldConfig) dependency.Manifold

Manifold builds a dependency.Manifold for running a lease manager.

func NewStore Uses

func NewStore(config raftlease.StoreConfig) *raftlease.Store

NewStore is a shim to make a raftlease.Store for testability.

func NewWorker Uses

func NewWorker(config lease.ManagerConfig) (worker.Worker, error)

NewWorker wraps NewManager to return worker.Worker for testability.

type ManifoldConfig Uses

type ManifoldConfig struct {
    AgentName      string
    ClockName      string
    CentralHubName string
    StateName      string

    FSM                  *raftlease.FSM
    RequestTopic         string
    Logger               lease.Logger
    LogDir               string
    PrometheusRegisterer prometheus.Registerer
    NewWorker            func(lease.ManagerConfig) (worker.Worker, error)
    NewStore             func(raftlease.StoreConfig) *raftlease.Store
}

ManifoldConfig holds the resources needed to start the lease manager in a dependency engine.

func (ManifoldConfig) Validate Uses

func (c ManifoldConfig) Validate() error

Validate checks that the config has all the required values.

Package manifold imports 16 packages (graph) and is imported by 3 packages. Updated 2019-09-07. Refresh now. Tools for package owners.