Documentation
¶
Index ¶
- Constants
- Variables
- func LoadPoolNames(ctx context.Context, cl *client.Client, pfx string) (cold string, hot string, journal string, err error)
- type ClusterConfiguration
- type ClusterState
- func (s *ClusterState) ActiveMASH() *MASHMap
- func (s *ClusterState) ActiveMembers() int
- func (cs *ClusterState) GapPercentage() float64
- func (s *ClusterState) HasLeader() bool
- func (cs *ClusterState) Healthy() bool
- func (s *ClusterState) IdealLeader() uint32
- func (s *ClusterState) IdealMash() *MASHMap
- func (s *ClusterState) MashAt(v int64) *MASHMap
- func (s *ClusterState) ProposedMASH() *MASHMap
- func (s *ClusterState) ProposedMashNumber() (proposed int64, active int64, allmax bool)
- func (cs *ClusterState) String() string
- type Configuration
- type FileConfig
- func (c *FileConfig) BlockCache() int
- func (c *FileConfig) ClusterEnabled() bool
- func (c *FileConfig) ClusterEtcdEndpoints() []string
- func (c *FileConfig) ClusterPrefix() string
- func (c *FileConfig) CoalesceMaxInterval() int
- func (c *FileConfig) CoalesceMaxPoints() int
- func (c *FileConfig) GRPCAdvertise() []string
- func (c *FileConfig) GRPCEnabled() bool
- func (c *FileConfig) GRPCListen() string
- func (c *FileConfig) HttpAdvertise() []string
- func (c *FileConfig) HttpEnabled() bool
- func (c *FileConfig) HttpListen() string
- func (c *FileConfig) RadosReadCache() int
- func (c *FileConfig) RadosWriteCache() int
- func (c *FileConfig) StorageCephConf() string
- func (c *FileConfig) StorageCephDataPool() string
- func (c *FileConfig) StorageCephHotPool() string
- func (c *FileConfig) StorageCephJournalPool() string
- func (c *FileConfig) StorageFilepath() string
- type MASHMap
- func (currentMash *MASHMap) CompatibleIntermediateMash(idealMash *MASHMap) *MASHMap
- func (mm *MASHMap) Equivalent(rhs *MASHMap) bool
- func (mm *MASHMap) Gap() int64
- func (mm *MASHMap) IntersectWithFreeSpace(r *MashRange, excluding uint32) *MashRange
- func (mm *MASHMap) Len() int
- func (mm *MASHMap) Less(i, j int) bool
- func (mm *MASHMap) String() string
- func (mm *MASHMap) Swap(i, j int)
- type MashRange
- type Member
Constants ¶
View Source
const HASHRANGE_END = (1 << 32)
View Source
const True = "true"
Variables ¶
View Source
var FullMashRange = MashRange{ Start: 0, End: HASHRANGE_END, }
Functions ¶
Types ¶
type ClusterConfiguration ¶
type ClusterConfiguration interface {
// Returns true if we hold the write lock for the given uuid. Returns false
// if we do not have the write lock, or we are trying to get rid of the write
// lock
NodeName() string
WeHoldWriteLockFor(uuid []byte) bool
OurRanges() (active MashRange, proposed MashRange)
WatchMASHChange(w func(flushComplete chan struct{}, activeRange MashRange, proposedRange MashRange))
PeerHTTPAdvertise(nodename string) ([]string, error)
PeerGRPCAdvertise(nodename string) ([]string, error)
GetCachedClusterState() *ClusterState
// MASHNumber() int64
// Called when the node knows it is faulty (generally pre-panic). This
// removes the delay that would normally accompany the lease expiry
Fault(fz string, args ...interface{})
// Get a tunable, and watch it for all future changes. Only meant to be
// used by Rez
WatchTunable(name string, onchange func(v string)) error
GetEtcdClient() *etcd.Client
BeginClusterDaemons()
}
type ClusterState ¶
type ClusterState struct {
Revision int64
Members map[string]*Member
Mashes map[int64]map[string]*MashRange
Leader string
LeaderRevision int64
// contains filtered or unexported fields
}
func QueryClusterState ¶
func (*ClusterState) ActiveMASH ¶
func (s *ClusterState) ActiveMASH() *MASHMap
func (*ClusterState) ActiveMembers ¶
func (s *ClusterState) ActiveMembers() int
func (*ClusterState) GapPercentage ¶
func (cs *ClusterState) GapPercentage() float64
func (*ClusterState) HasLeader ¶
func (s *ClusterState) HasLeader() bool
func (*ClusterState) Healthy ¶
func (cs *ClusterState) Healthy() bool
func (*ClusterState) IdealLeader ¶
func (s *ClusterState) IdealLeader() uint32
func (*ClusterState) IdealMash ¶
func (s *ClusterState) IdealMash() *MASHMap
func (*ClusterState) MashAt ¶
func (s *ClusterState) MashAt(v int64) *MASHMap
func (*ClusterState) ProposedMASH ¶
func (s *ClusterState) ProposedMASH() *MASHMap
func (*ClusterState) ProposedMashNumber ¶
func (s *ClusterState) ProposedMashNumber() (proposed int64, active int64, allmax bool)
Highest map num, all at max
func (*ClusterState) String ¶
func (cs *ClusterState) String() string
type Configuration ¶
type Configuration interface {
ClusterEnabled() bool
ClusterPrefix() string
ClusterEtcdEndpoints() []string
StorageCephConf() string
StorageFilepath() string
StorageCephDataPool() string
StorageCephHotPool() string
StorageCephJournalPool() string
HttpEnabled() bool
HttpListen() string
HttpAdvertise() []string
GRPCEnabled() bool
GRPCListen() string
GRPCAdvertise() []string
BlockCache() int
RadosReadCache() int
RadosWriteCache() int
// Note that these are "live" and called in the hotpath, so buffer them
CoalesceMaxPoints() int
CoalesceMaxInterval() int
}
func LoadEtcdConfig ¶
func LoadEtcdConfig(cfg Configuration, overrideNodename string) (Configuration, error)
The file config is loaded first, and used to bootstrap etcd if requred
func LoadFileConfig ¶
func LoadFileConfig(path string) (Configuration, error)
type FileConfig ¶
type FileConfig struct {
Cluster struct {
Prefix string
EtcdEndpoint []string
Enabled bool
}
Http struct {
Listen string
Advertise []string
Enabled bool
}
Grpc struct {
Listen string
Advertise []string
Enabled bool
}
Storage struct {
Filepath string
CephDataPool string
CephHotPool string
CephJournalPool string
CephConf string
}
Cache struct {
BlockCache int
RadosWriteCache int
RadosReadCache int
}
Debug struct {
Cpuprofile bool
Heapprofile bool
}
Coalescence struct {
MaxPoints int
Interval int
}
}
func (*FileConfig) BlockCache ¶
func (c *FileConfig) BlockCache() int
func (*FileConfig) ClusterEnabled ¶
func (c *FileConfig) ClusterEnabled() bool
func (*FileConfig) ClusterEtcdEndpoints ¶
func (c *FileConfig) ClusterEtcdEndpoints() []string
func (*FileConfig) ClusterPrefix ¶
func (c *FileConfig) ClusterPrefix() string
func (*FileConfig) CoalesceMaxInterval ¶
func (c *FileConfig) CoalesceMaxInterval() int
func (*FileConfig) CoalesceMaxPoints ¶
func (c *FileConfig) CoalesceMaxPoints() int
func (*FileConfig) GRPCAdvertise ¶
func (c *FileConfig) GRPCAdvertise() []string
func (*FileConfig) GRPCEnabled ¶
func (c *FileConfig) GRPCEnabled() bool
func (*FileConfig) GRPCListen ¶
func (c *FileConfig) GRPCListen() string
func (*FileConfig) HttpAdvertise ¶
func (c *FileConfig) HttpAdvertise() []string
func (*FileConfig) HttpEnabled ¶
func (c *FileConfig) HttpEnabled() bool
func (*FileConfig) HttpListen ¶
func (c *FileConfig) HttpListen() string
func (*FileConfig) RadosReadCache ¶
func (c *FileConfig) RadosReadCache() int
func (*FileConfig) RadosWriteCache ¶
func (c *FileConfig) RadosWriteCache() int
func (*FileConfig) StorageCephConf ¶
func (c *FileConfig) StorageCephConf() string
func (*FileConfig) StorageCephDataPool ¶
func (c *FileConfig) StorageCephDataPool() string
func (*FileConfig) StorageCephHotPool ¶
func (c *FileConfig) StorageCephHotPool() string
func (*FileConfig) StorageCephJournalPool ¶
func (c *FileConfig) StorageCephJournalPool() string
func (*FileConfig) StorageFilepath ¶
func (c *FileConfig) StorageFilepath() string
type MASHMap ¶
type MASHMap struct {
Ranges []*MashRange
Hashes []uint32
Nodenames []string
Weights []int64
TotalWeight int64
// contains filtered or unexported fields
}
func (*MASHMap) CompatibleIntermediateMash ¶
func (*MASHMap) Equivalent ¶
Return true if these maps are identical
func (*MASHMap) IntersectWithFreeSpace ¶
Return the range that is the intersection of mashRange and the free space in mm if you remove 'excluding' (the hash of a node)
Click to show internal directories.
Click to hide internal directories.