store

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2021 License: Apache-2.0, MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BackupBinary is a file backup format.
	BackupBinary = iota
)

Variables

View Source
var (
	// NamespaceNotExist namespace not created
	NamespaceNotExist = errors.New("namespace not exist")
	// UnmarshalFail unmarshal failed
	UnmarshalFail = errors.New("unmarshal failed")
)
View Source
var (
	// ErrNotLeader is returned when a node attempts to execute a leader-only
	// operation.
	ErrNotLeader = errors.New("not leader")

	// ErrStaleRead is returned if the executing the query would violate the
	// requested freshness.
	ErrStaleRead = errors.New("stale read")

	// ErrOpenTimeout is returned when the Store does not apply its initial
	// logs within the specified time.
	ErrOpenTimeout = errors.New("timeout waiting for initial logs application")

	// ErrInvalidBackupFormat is returned when the requested backup format
	// is not valid.
	ErrInvalidBackupFormat = errors.New("invalid backup format")
)

Functions

func CreateModelFormEnforcerState

func CreateModelFormEnforcerState(state EnforcerState) (model2.Model, error)

CreateModelFormEnforcerState create enforcer state and add links of rule groups

func IsNewNode

func IsNewNode(raftDir string) bool

IsNewNode returns whether a node using raftDir would be a brand new node. It also means that the window this node joining a different cluster has passed.

Types

type AssertionState

type AssertionState struct {
	Key       string
	Value     string
	Tokens    []string
	Policy    [][]string
	PolicyMap map[string]int
}

type AssertionStateMap

type AssertionStateMap map[string]AssertionState

type BackupFormat

type BackupFormat int

BackupFormat represents the format of database backup.

type ClusterState

type ClusterState int

ClusterState defines the possible Raft states the current node can be in

const (
	Leader ClusterState = iota
	Follower
	Candidate
	Shutdown
	Unknown
)

Represents the Raft cluster states

type EnforcerState

type EnforcerState struct {
	Model ModelState
}

func CreateEnforcerState

func CreateEnforcerState(e *casbin.DistributedEnforcer) (EnforcerState, error)

CreateEnforcerState transform enforce state to persisting state

type FSMEnforceResponse

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

type FSMResponse

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

type Listener

type Listener interface {
	net.Listener
	Dial(address string, timeout time.Duration) (net.Conn, error)
}

Listener is the interface expected by the Store for Transports.

type ModelState

type ModelState map[string]AssertionStateMap

type Server

type Server struct {
	ID   string `json:"id,omitempty"`
	Addr string `json:"addr,omitempty"`
}

Server represents another node in the cluster.

type Servers

type Servers []*Server

Servers is a set of Servers.

func (Servers) Len

func (s Servers) Len() int

func (Servers) Less

func (s Servers) Less(i, j int) bool

func (Servers) Swap

func (s Servers) Swap(i, j int)

type Store

type Store struct {
	ShutdownOnRemove   bool
	SnapshotThreshold  uint64
	SnapshotInterval   time.Duration
	LeaderLeaseTimeout time.Duration
	HeartbeatTimeout   time.Duration
	ElectionTimeout    time.Duration
	ApplyTimeout       time.Duration
	RaftLogLevel       string
	// contains filtered or unexported fields
}

Store is casbin memory data, where all changes are made via Raft consensus.

func New

func New(ln Listener, c *StoreConfig) *Store

New returns a new Store.

func (*Store) AddPolicies

func (s *Store) AddPolicies(ctx context.Context, ns string, sec string, pType string, rules [][]string) error

AddPolicy implements the casbin.Adapter interface.

func (*Store) Addr

func (s *Store) Addr() string

Addr returns the address of the store.

func (*Store) Apply

func (s *Store) Apply(l *raft.Log) (e interface{})

func (*Store) ClearPolicy

func (s *Store) ClearPolicy(ctx context.Context, ns string) error

ClearPolicy implements the casbin.Adapter interface.

func (*Store) Close

func (s *Store) Close(wait bool) error

Close closes the store. If wait is true, waits for a graceful shutdown.

func (*Store) CreateNamespace

func (s *Store) CreateNamespace(ctx context.Context, ns string) error

CreateNamespace

func (*Store) Enforce

func (s *Store) Enforce(ctx context.Context, ns string, level command.EnforcePayload_Level, freshness int64, params ...interface{}) (bool, error)

Enforce

func (*Store) ID

func (s *Store) ID() string

ID returns the Raft ID of the store.

func (*Store) IsLeader

func (s *Store) IsLeader() bool

IsLeader is used to determine if the current node is cluster leader

func (*Store) Join

func (s *Store) Join(id, addr string, voter bool, metadata map[string]string) error

Join joins a node, identified by id and located at addr, to this store. The node must be ready to respond to Raft communications at that address.

func (*Store) LeaderAddr

func (s *Store) LeaderAddr() string

LeaderAddr returns the address of the current leader. Returns a blank string if there is no leader.

func (*Store) LeaderID

func (s *Store) LeaderID() (string, error)

LeaderID returns the node ID of the Raft leader. Returns a blank string if there is no leader, or an error.

func (*Store) Nodes

func (s *Store) Nodes() ([]*Server, error)

Nodes returns the slice of nodes in the cluster, sorted by ID ascending.

func (*Store) Open

func (s *Store) Open(enableBootstrap bool) error

Open opens the Store. If enableBootstrap is set, then this node becomes a standalone node. If not set, then the calling layer must know that this node has pre-existing state, or the calling layer will trigger a join operation after opening the Store.

func (*Store) Path

func (s *Store) Path() string

Path returns the path to the store's storage directory.

func (*Store) Remove

func (s *Store) Remove(id string) error

Remove removes a node from the store, specified by ID.

func (*Store) RemoveFilteredPolicy

func (s *Store) RemoveFilteredPolicy(ctx context.Context, ns string, sec string, pType string, fi int32, fv []string) error

RemoveFilteredPolicy implements the casbin.Adapter interface.

func (*Store) RemovePolicies

func (s *Store) RemovePolicies(ctx context.Context, ns string, sec string, pType string, rules [][]string) error

RemovePolicies implements the casbin.Adapter interface.

func (*Store) Restore

func (s *Store) Restore(closer io.ReadCloser) error

func (*Store) SetMetadata

func (s *Store) SetMetadata(md map[string]string) error

SetMetadata adds the metadata md to any existing metadata for this node.

func (*Store) SetModelFromString

func (s *Store) SetModelFromString(ctx context.Context, ns string, text string) error

SetModelFromString

func (*Store) Snapshot

func (s *Store) Snapshot() (raft.FSMSnapshot, error)

func (*Store) State

func (s *Store) State() ClusterState

State returns the current node's Raft state

func (*Store) Stats

func (s *Store) Stats() (map[string]interface{}, error)

Stats returns stats for the store.

func (*Store) UpdatePolicies

func (s *Store) UpdatePolicies(ctx context.Context, ns string, sec string, pType string, nr, or [][]string) error

UpdatePolicies implements the casbin.Adapter interface.

func (*Store) UpdatePolicy

func (s *Store) UpdatePolicy(ctx context.Context, ns string, sec string, pType string, nr, or []string) error

UpdatePolicy implements the casbin.Adapter interface.

func (*Store) WaitForApplied

func (s *Store) WaitForApplied(timeout time.Duration) error

WaitForApplied waits for all Raft log entries to to be applied to the underlying database.

func (*Store) WaitForAppliedIndex

func (s *Store) WaitForAppliedIndex(idx uint64, timeout time.Duration) error

WaitForAppliedIndex blocks until a given log index has been applied, or the timeout expires.

func (*Store) WaitForLeader

func (s *Store) WaitForLeader(timeout time.Duration) (string, error)

WaitForLeader blocks until a leader is detected, or the timeout expires.

type StoreConfig

type StoreConfig struct {
	Dir    string      // The working directory for raft.
	Tn     Transport   // The underlying Transport for raft.
	ID     string      // Node ID.
	Logger *log.Logger // The logger to use to log stuff.
}

StoreConfig represents the configuration of the underlying Store.

type Transport

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

Transport is the network service provided to Raft, and wraps a Listener.

func NewTransport

func NewTransport(ln Listener) *Transport

NewTransport returns an initialized Transport.

func (*Transport) Accept

func (t *Transport) Accept() (net.Conn, error)

Accept waits for the next connection.

func (*Transport) Addr

func (t *Transport) Addr() net.Addr

Addr returns the binding address of the transport.

func (*Transport) Close

func (t *Transport) Close() error

Close closes the transport

func (*Transport) Dial

func (t *Transport) Dial(addr raft.ServerAddress, timeout time.Duration) (net.Conn, error)

Dial creates a new network connection.

Jump to

Keyboard shortcuts

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