mongo

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Dec 21, 2020 License: Apache-2.0 Imports: 12 Imported by: 1

Documentation

Index

Constants

View Source
const (
	MinVotingMembers = 1
	MaxVotingMembers = 7
	MaxMembers       = 50
)
View Source
const (
	MemberHealthDown MemberHealth = iota
	MemberHealthUp
	MemberStateStartup    MemberState = 0
	MemberStatePrimary    MemberState = 1
	MemberStateSecondary  MemberState = 2
	MemberStateRecovering MemberState = 3
	MemberStateStartup2   MemberState = 5
	MemberStateUnknown    MemberState = 6
	MemberStateArbiter    MemberState = 7
	MemberStateDown       MemberState = 8
	MemberStateRollback   MemberState = 9
	MemberStateRemoved    MemberState = 10
)

Variables

View Source
var MemberStateStrings = map[MemberState]string{
	MemberStateStartup:    "STARTUP",
	MemberStatePrimary:    "PRIMARY",
	MemberStateSecondary:  "SECONDARY",
	MemberStateRecovering: "RECOVERING",
	MemberStateStartup2:   "STARTUP2",
	MemberStateUnknown:    "UNKNOWN",
	MemberStateArbiter:    "ARBITER",
	MemberStateDown:       "DOWN",
	MemberStateRollback:   "ROLLBACK",
	MemberStateRemoved:    "REMOVED",
}

Functions

func Dial

func Dial(conf *Config) (*mongo.Client, error)

func IsBalancerRunning added in v1.6.0

func IsBalancerRunning(ctx context.Context, client *mongo.Client) (bool, error)

func StartBalancer added in v1.6.0

func StartBalancer(ctx context.Context, client *mongo.Client) error

func StepDown added in v1.5.0

func StepDown(ctx context.Context, client *mongo.Client) error

func StopBalancer added in v1.6.0

func StopBalancer(ctx context.Context, client *mongo.Client) error

func UpdateUser added in v1.5.0

func UpdateUser(ctx context.Context, client *mongo.Client, currName, newName, pass string) error

UpdateUser recreates user with new name and password should be used only when username was changed

func UpdateUserPass added in v1.5.0

func UpdateUserPass(ctx context.Context, client *mongo.Client, name, pass string) error

UpdateUserPass updates user's password

func WriteConfig

func WriteConfig(ctx context.Context, client *mongo.Client, cfg RSConfig) error

Types

type BalancerStatus added in v1.6.0

type BalancerStatus struct {
	Mode       string `json:"mode"`
	OKResponse `bson:",inline"`
}

type BuildInfo added in v1.5.0

type BuildInfo struct {
	Version    string `json:"version" bson:"version"`
	OKResponse `bson:",inline"`
}

BuildInfo contains information about mongod build params

func RSBuildInfo added in v1.5.0

func RSBuildInfo(ctx context.Context, client *mongo.Client) (BuildInfo, error)

type Config added in v1.6.0

type Config struct {
	Hosts       []string
	ReplSetName string
	Username    string
	Password    string
	TLSConf     *tls.Config
}

type ConfigMember added in v1.5.0

type ConfigMember struct {
	ID           int         `bson:"_id" json:"_id"`
	Host         string      `bson:"host" json:"host"`
	ArbiterOnly  bool        `bson:"arbiterOnly" json:"arbiterOnly"`
	BuildIndexes bool        `bson:"buildIndexes" json:"buildIndexes"`
	Hidden       bool        `bson:"hidden" json:"hidden"`
	Priority     int         `bson:"priority" json:"priority"`
	Tags         ReplsetTags `bson:"tags,omitempty" json:"tags,omitempty"`
	SlaveDelay   int64       `bson:"slaveDelay" json:"slaveDelay"`
	Votes        int         `bson:"votes" json:"votes"`
}

RSMember document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig

func (ConfigMember) String added in v1.5.0

func (m ConfigMember) String() string

type ConfigMembers added in v1.5.0

type ConfigMembers []ConfigMember

func (*ConfigMembers) AddNew added in v1.5.0

func (m *ConfigMembers) AddNew(from ConfigMembers) (changes bool)

AddNew adds new members from given list

func (*ConfigMembers) RemoveOld added in v1.5.0

func (m *ConfigMembers) RemoveOld(compareWith ConfigMembers) (changes bool)

RemoveOld removes from the list those members which are not present in the given list. It always should leave at least one element. The config won't be valid for mongo otherwise. Better, if the last element has the smallest ID in order not to produce defragmentation when the next element will be added (ID = maxID + 1). Mongo replica set member ID must be between 0 and 255, so it matters.

func (*ConfigMembers) SetVotes added in v1.5.0

func (m *ConfigMembers) SetVotes()

SetVotes sets voting parameters for members list

type Member

type Member struct {
	Id                int                 `bson:"_id" json:"_id"`
	Name              string              `bson:"name" json:"name"`
	Health            MemberHealth        `bson:"health" json:"health"`
	State             MemberState         `bson:"state" json:"state"`
	StateStr          string              `bson:"stateStr" json:"stateStr"`
	Uptime            int64               `bson:"uptime" json:"uptime"`
	Optime            *Optime             `bson:"optime" json:"optime"`
	OptimeDate        time.Time           `bson:"optimeDate" json:"optimeDate"`
	ConfigVersion     int                 `bson:"configVersion" json:"configVersion"`
	ElectionTime      primitive.Timestamp `bson:"electionTime,omitempty" json:"electionTime,omitempty"`
	ElectionDate      time.Time           `bson:"electionDate,omitempty" json:"electionDate,omitempty"`
	InfoMessage       string              `bson:"infoMessage,omitempty" json:"infoMessage,omitempty"`
	OptimeDurable     *Optime             `bson:"optimeDurable,omitempty" json:"optimeDurable,omitempty"`
	OptimeDurableDate time.Time           `bson:"optimeDurableDate,omitempty" json:"optimeDurableDate,omitempty"`
	LastHeartbeat     time.Time           `bson:"lastHeartbeat,omitempty" json:"lastHeartbeat,omitempty"`
	LastHeartbeatRecv time.Time           `bson:"lastHeartbeatRecv,omitempty" json:"lastHeartbeatRecv,omitempty"`
	PingMs            int64               `bson:"pingMs,omitempty" json:"pingMs,omitempty"`
	Self              bool                `bson:"self,omitempty" json:"self,omitempty"`
	SyncingTo         string              `bson:"syncingTo,omitempty" json:"syncingTo,omitempty"`
}

type MemberHealth added in v1.5.0

type MemberHealth int

type MemberState added in v1.5.0

type MemberState int

type OKResponse

type OKResponse struct {
	Errmsg string `bson:"errmsg,omitempty" json:"errmsg,omitempty"`
	OK     int    `bson:"ok" json:"ok"`
}

OKResponse is a standard MongoDB response

type Optime added in v1.5.0

type Optime struct {
	Timestamp primitive.Timestamp `bson:"ts" json:"ts"`
	Term      int64               `bson:"t" json:"t"`
}

type RSConfig

type RSConfig struct {
	ID                                 string        `bson:"_id" json:"_id"`
	Version                            int           `bson:"version" json:"version"`
	Members                            ConfigMembers `bson:"members" json:"members"`
	Configsvr                          bool          `bson:"configsvr,omitempty" json:"configsvr,omitempty"`
	ProtocolVersion                    int           `bson:"protocolVersion,omitempty" json:"protocolVersion,omitempty"`
	Settings                           Settings      `bson:"settings,omitempty" json:"settings,omitempty"`
	WriteConcernMajorityJournalDefault bool          `bson:"writeConcernMajorityJournalDefault,omitempty" json:"writeConcernMajorityJournalDefault,omitempty"`
}

func ReadConfig

func ReadConfig(ctx context.Context, client *mongo.Client) (RSConfig, error)

type ReplSetGetConfig

type ReplSetGetConfig struct {
	Config     *RSConfig `bson:"config" json:"config"`
	OKResponse `bson:",inline"`
}

Response document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig

type Settings

type Settings struct {
	ChainingAllowed         bool                   `bson:"chainingAllowed,omitempty" json:"chainingAllowed,omitempty"`
	HeartbeatIntervalMillis int64                  `bson:"heartbeatIntervalMillis,omitempty" json:"heartbeatIntervalMillis,omitempty"`
	HeartbeatTimeoutSecs    int                    `bson:"heartbeatTimeoutSecs,omitempty" json:"heartbeatTimeoutSecs,omitempty"`
	ElectionTimeoutMillis   int64                  `bson:"electionTimeoutMillis,omitempty" json:"electionTimeoutMillis,omitempty"`
	CatchUpTimeoutMillis    int64                  `bson:"catchUpTimeoutMillis,omitempty" json:"catchUpTimeoutMillis,omitempty"`
	GetLastErrorModes       map[string]ReplsetTags `bson:"getLastErrorModes,omitempty" json:"getLastErrorModes,omitempty"`
	GetLastErrorDefaults    WriteConcern           `bson:"getLastErrorDefaults,omitempty" json:"getLastErrorDefaults,omitempty"`
	ReplicaSetID            primitive.ObjectID     `bson:"replicaSetId,omitempty" json:"replicaSetId,omitempty"`
}

Settings document from 'replSetGetConfig': https://docs.mongodb.com/manual/reference/command/replSetGetConfig/#dbcmd.replSetGetConfig

type ShardList added in v1.6.0

type ShardList struct {
	Shards []struct {
		ID    string `json:"_id"`
		Host  string `json:"host"`
		State int    `json:"state"`
	} `json:"shards"`
	OKResponse `bson:",inline"`
}

func ListShard added in v1.6.0

func ListShard(ctx context.Context, client *mongo.Client) (ShardList, error)

type Status added in v1.5.0

type Status struct {
	Set                     string         `bson:"set" json:"set"`
	Date                    time.Time      `bson:"date" json:"date"`
	MyState                 MemberState    `bson:"myState" json:"myState"`
	Members                 []*Member      `bson:"members" json:"members"`
	Term                    int64          `bson:"term,omitempty" json:"term,omitempty"`
	HeartbeatIntervalMillis int64          `bson:"heartbeatIntervalMillis,omitempty" json:"heartbeatIntervalMillis,omitempty"`
	Optimes                 *StatusOptimes `bson:"optimes,omitempty" json:"optimes,omitempty"`
	OKResponse              `bson:",inline"`
}

func RSStatus added in v1.5.0

func RSStatus(ctx context.Context, client *mongo.Client) (Status, error)

func (*Status) GetMembersByState added in v1.5.0

func (s *Status) GetMembersByState(state MemberState, limit int) []*Member

func (*Status) Primary added in v1.5.0

func (s *Status) Primary() *Member

type StatusOptimes added in v1.5.0

type StatusOptimes struct {
	LastCommittedOpTime *Optime `bson:"lastCommittedOpTime" json:"lastCommittedOpTime"`
	AppliedOpTime       *Optime `bson:"appliedOpTime" json:"appliedOpTime"`
	DurableOptime       *Optime `bson:"durableOpTime" json:"durableOpTime"`
}

type WriteConcern

type WriteConcern struct {
	WriteConcern interface{} `bson:"w" json:"w"`
	WriteTimeout int         `bson:"wtimeout" json:"wtimeout"`
	Journal      bool        `bson:"j,omitempty" json:"j,omitempty"`
}

WriteConcern document: https://docs.mongodb.com/manual/reference/write-concern/

Jump to

Keyboard shortcuts

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