package schema

import "go.etcd.io/etcd/server/v3/storage/schema"

Index

Constants

const (
	MemberAttributesSuffix     = "attributes"
	MemberRaftAttributesSuffix = "raftAttributes"
)

Variables

var (
	Key     = backend.Bucket(bucket{id: 1, name: keyBucketName, safeRangeBucket: true})
	Meta    = backend.Bucket(bucket{id: 2, name: metaBucketName, safeRangeBucket: false})
	Lease   = backend.Bucket(bucket{id: 3, name: leaseBucketName, safeRangeBucket: false})
	Alarm   = backend.Bucket(bucket{id: 4, name: alarmBucketName, safeRangeBucket: false})
	Cluster = backend.Bucket(bucket{id: 5, name: clusterBucketName, safeRangeBucket: false})

	Members        = backend.Bucket(bucket{id: 10, name: membersBucketName, safeRangeBucket: false})
	MembersRemoved = backend.Bucket(bucket{id: 11, name: membersRemovedBucketName, safeRangeBucket: false})

	Auth      = backend.Bucket(bucket{id: 20, name: authBucketName, safeRangeBucket: false})
	AuthUsers = backend.Bucket(bucket{id: 21, name: authUsersBucketName, safeRangeBucket: false})
	AuthRoles = backend.Bucket(bucket{id: 22, name: authRolesBucketName, safeRangeBucket: false})

	Test = backend.Bucket(bucket{id: 100, name: testBucketName, safeRangeBucket: false})

	AllBuckets = []backend.Bucket{Key, Meta, Lease, Alarm, Cluster, Members, MembersRemoved, Auth, AuthUsers, AuthRoles}
)
var (
	// Pre v3.5
	ScheduledCompactKeyName    = []byte("scheduledCompactRev")
	FinishedCompactKeyName     = []byte("finishedCompactRev")
	MetaConsistentIndexKeyName = []byte("consistent_index")
	AuthEnabledKeyName         = []byte("authEnabled")
	AuthRevisionKeyName        = []byte("authRevision")
	// Since v3.5
	MetaTermKeyName              = []byte("term")
	MetaConfStateName            = []byte("confState")
	ClusterClusterVersionKeyName = []byte("clusterVersion")
	ClusterDowngradeKeyName      = []byte("downgrade")
	// Since v3.6
	MetaStorageVersionName = []byte("storageVersion")
)

Functions

func BackendMemberKey

func BackendMemberKey(id types.ID) []byte

func CreateMetaBucket

func CreateMetaBucket(tx backend.BatchTx)

CreateMetaBucket creates the `meta` bucket (if it does not exist yet).

func DefaultIgnores

func DefaultIgnores(bucket, key []byte) bool

DefaultIgnores defines buckets & keys to ignore in hash checking.

func DetectSchemaVersion

func DetectSchemaVersion(lg *zap.Logger, tx backend.ReadTx) (v semver.Version, err error)

DetectSchemaVersion returns version of storage schema. Returned value depends on etcd version that created the backend. For * v3.6 and newer will return storage version. * v3.5 will return it's version if it includes all storage fields added in v3.5 (might require a snapshot). * v3.4 and older is not supported and will return error.

func Migrate

func Migrate(lg *zap.Logger, tx backend.BatchTx, w wal.Version, target semver.Version) error

Migrate updates storage schema to provided target version. Downgrading requires that provided WAL doesn't contain unsupported entries.

func MustUnsafeGetAllLeases

func MustUnsafeGetAllLeases(tx backend.UnsafeReader) []*leasepb.Lease

func MustUnsafeGetLease

func MustUnsafeGetLease(tx backend.UnsafeReader, leaseID int64) *leasepb.Lease

func MustUnsafePutLease

func MustUnsafePutLease(tx backend.UnsafeWriter, lpb *leasepb.Lease)

func MustUnsafeSaveConfStateToBackend

func MustUnsafeSaveConfStateToBackend(lg *zap.Logger, tx backend.UnsafeWriter, confState *raftpb.ConfState)

MustUnsafeSaveConfStateToBackend persists confState using given transaction (tx). confState in backend is persisted since etcd v3.5.

func NewAuthBackend

func NewAuthBackend(lg *zap.Logger, be backend.Backend) auth.AuthBackend

func NewMembershipBackend

func NewMembershipBackend(lg *zap.Logger, be backend.Backend) *membershipBackend

func ReadConsistentIndex

func ReadConsistentIndex(tx backend.ReadTx) (uint64, uint64)

ReadConsistentIndex loads consistent index and term from given transaction. returns 0 if the data are not found.

func ReadStorageVersion

func ReadStorageVersion(tx backend.ReadTx) *semver.Version

ReadStorageVersion loads storage version from given backend transaction. Populated since v3.6

func ReadStorageVersionFromSnapshot

func ReadStorageVersionFromSnapshot(tx *bbolt.Tx) *semver.Version

ReadStorageVersionFromSnapshot loads storage version from given bbolt transaction. Populated since v3.6

func UnsafeClearStorageVersion

func UnsafeClearStorageVersion(tx backend.UnsafeWriter)

UnsafeClearStorageVersion removes etcd storage version in backend.

func UnsafeConfStateFromBackend

func UnsafeConfStateFromBackend(lg *zap.Logger, tx backend.UnsafeReader) *raftpb.ConfState

UnsafeConfStateFromBackend retrieves ConfState from the backend. Returns nil if confState in backend is not persisted (e.g. backend written by <v3.5).

func UnsafeCreateAuthRolesBucket

func UnsafeCreateAuthRolesBucket(tx backend.UnsafeWriter)

func UnsafeCreateLeaseBucket

func UnsafeCreateLeaseBucket(tx backend.UnsafeWriter)

func UnsafeCreateMetaBucket

func UnsafeCreateMetaBucket(tx backend.UnsafeWriter)

UnsafeCreateMetaBucket creates the `meta` bucket (if it does not exist yet).

func UnsafeDeleteLease

func UnsafeDeleteLease(tx backend.UnsafeWriter, lpb *leasepb.Lease)

func UnsafeDetectSchemaVersion

func UnsafeDetectSchemaVersion(lg *zap.Logger, tx backend.UnsafeReader) (v semver.Version, err error)

UnsafeDetectSchemaVersion non-threadsafe version of DetectSchemaVersion.

func UnsafeMigrate

func UnsafeMigrate(lg *zap.Logger, tx backend.UnsafeReadWriter, w wal.Version, target semver.Version) error

UnsafeMigrate is non thread-safe version of Migrate.

func UnsafeReadConsistentIndex

func UnsafeReadConsistentIndex(tx backend.UnsafeReader) (uint64, uint64)

UnsafeReadConsistentIndex loads consistent index & term from given transaction. returns 0,0 if the data are not found. Term is persisted since v3.5.

func UnsafeReadStorageVersion

func UnsafeReadStorageVersion(tx backend.UnsafeReader) *semver.Version

UnsafeReadStorageVersion loads storage version from given backend transaction. Populated since v3.6

func UnsafeSetStorageVersion

func UnsafeSetStorageVersion(tx backend.UnsafeWriter, v *semver.Version)

UnsafeSetStorageVersion updates etcd storage version in backend. Populated since v3.6

func UnsafeUpdateConsistentIndex

func UnsafeUpdateConsistentIndex(tx backend.UnsafeReadWriter, index uint64, term uint64)

func UnsafeUpdateConsistentIndexForce

func UnsafeUpdateConsistentIndexForce(tx backend.UnsafeReadWriter, index uint64, term uint64)

func Validate

func Validate(lg *zap.Logger, tx backend.ReadTx) error

Validate checks provided backend to confirm that schema used is supported.

Types

type ActionList

type ActionList []action

type AlarmBackend

type AlarmBackend interface {
	CreateAlarmBucket()
	MustPutAlarm(member *etcdserverpb.AlarmMember)
	MustDeleteAlarm(alarm *etcdserverpb.AlarmMember)
	GetAllAlarms() ([]*etcdserverpb.AlarmMember, error)
	ForceCommit()
}

func NewAlarmBackend

func NewAlarmBackend(lg *zap.Logger, be backend.Backend) AlarmBackend

Source Files

actions.go alarm.go auth.go auth_roles.go auth_users.go bucket.go changes.go cindex.go confstate.go lease.go membership.go migration.go schema.go version.go

Version
v3.6.0 (latest)
Published
May 15, 2025
Platform
linux/amd64
Imports
20 packages
Last checked
2 minutes ago

Tools for package owners.