...

Source file src/go.etcd.io/etcd/server/v3/mvcc/buckets/bucket.go

Documentation: go.etcd.io/etcd/server/v3/mvcc/buckets

     1  // Copyright 2021 The etcd Authors
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package buckets
    16  
    17  import (
    18  	"bytes"
    19  
    20  	"go.etcd.io/etcd/server/v3/mvcc/backend"
    21  )
    22  
    23  var (
    24  	keyBucketName   = []byte("key")
    25  	metaBucketName  = []byte("meta")
    26  	leaseBucketName = []byte("lease")
    27  	alarmBucketName = []byte("alarm")
    28  
    29  	clusterBucketName = []byte("cluster")
    30  
    31  	membersBucketName        = []byte("members")
    32  	membersRemovedBucketName = []byte("members_removed")
    33  
    34  	authBucketName      = []byte("auth")
    35  	authUsersBucketName = []byte("authUsers")
    36  	authRolesBucketName = []byte("authRoles")
    37  
    38  	testBucketName = []byte("test")
    39  )
    40  
    41  var (
    42  	Key     = backend.Bucket(bucket{id: 1, name: keyBucketName, safeRangeBucket: true})
    43  	Meta    = backend.Bucket(bucket{id: 2, name: metaBucketName, safeRangeBucket: false})
    44  	Lease   = backend.Bucket(bucket{id: 3, name: leaseBucketName, safeRangeBucket: false})
    45  	Alarm   = backend.Bucket(bucket{id: 4, name: alarmBucketName, safeRangeBucket: false})
    46  	Cluster = backend.Bucket(bucket{id: 5, name: clusterBucketName, safeRangeBucket: false})
    47  
    48  	Members        = backend.Bucket(bucket{id: 10, name: membersBucketName, safeRangeBucket: false})
    49  	MembersRemoved = backend.Bucket(bucket{id: 11, name: membersRemovedBucketName, safeRangeBucket: false})
    50  
    51  	Auth      = backend.Bucket(bucket{id: 20, name: authBucketName, safeRangeBucket: false})
    52  	AuthUsers = backend.Bucket(bucket{id: 21, name: authUsersBucketName, safeRangeBucket: false})
    53  	AuthRoles = backend.Bucket(bucket{id: 22, name: authRolesBucketName, safeRangeBucket: false})
    54  
    55  	Test = backend.Bucket(bucket{id: 100, name: testBucketName, safeRangeBucket: false})
    56  )
    57  
    58  type bucket struct {
    59  	id              backend.BucketID
    60  	name            []byte
    61  	safeRangeBucket bool
    62  }
    63  
    64  func (b bucket) ID() backend.BucketID    { return b.id }
    65  func (b bucket) Name() []byte            { return b.name }
    66  func (b bucket) String() string          { return string(b.Name()) }
    67  func (b bucket) IsSafeRangeBucket() bool { return b.safeRangeBucket }
    68  
    69  var (
    70  	MetaConsistentIndexKeyName = []byte("consistent_index")
    71  	MetaTermKeyName            = []byte("term")
    72  )
    73  
    74  // DefaultIgnores defines buckets & keys to ignore in hash checking.
    75  func DefaultIgnores(bucket, key []byte) bool {
    76  	// consistent index & term might be changed due to v2 internal sync, which
    77  	// is not controllable by the user.
    78  	return bytes.Compare(bucket, Meta.Name()) == 0 &&
    79  		(bytes.Compare(key, MetaTermKeyName) == 0 || bytes.Compare(key, MetaConsistentIndexKeyName) == 0)
    80  }
    81  

View as plain text