77
77
mPolicyMagicByte = CurrentMagicByteVer
78
78
mDDLTableVersion = []byte ("DDLTableVersion" )
79
79
mMetaDataLock = []byte ("metadataLock" )
80
+ // the id for 'default' group, the internal ddl can ensure
81
+ // user created resource group won't duplicate with this id.
82
+ defaultGroupID = int64 (1 )
83
+ // the default meta of the `default` group
84
+ defaultRGroupMeta = & model.ResourceGroupInfo {
85
+ ResourceGroupSettings : & model.ResourceGroupSettings {
86
+ RURate : 1000000 ,
87
+ BurstLimit : - 1 ,
88
+ Priority : model .MediumPriorityValue ,
89
+ },
90
+ ID : defaultGroupID ,
91
+ Name : model .NewCIStr ("default" ),
92
+ State : model .StatePublic ,
93
+ }
80
94
)
81
95
82
96
const (
@@ -559,8 +573,11 @@ func (m *Meta) AddResourceGroup(group *model.ResourceGroupInfo) error {
559
573
// UpdateResourceGroup updates a resource group.
560
574
func (m * Meta ) UpdateResourceGroup (group * model.ResourceGroupInfo ) error {
561
575
groupKey := m .resourceGroupKey (group .ID )
562
- if err := m .checkResourceGroupExists (groupKey ); err != nil {
563
- return errors .Trace (err )
576
+ // do not check the default because it may not be persisted.
577
+ if group .ID != defaultGroupID {
578
+ if err := m .checkResourceGroupExists (groupKey ); err != nil {
579
+ return errors .Trace (err )
580
+ }
564
581
}
565
582
566
583
data , err := json .Marshal (group )
@@ -964,6 +981,7 @@ func (m *Meta) ListResourceGroups() ([]*model.ResourceGroupInfo, error) {
964
981
return nil , errors .Trace (err )
965
982
}
966
983
984
+ hasDefault := false
967
985
groups := make ([]* model.ResourceGroupInfo , 0 , len (res ))
968
986
for _ , r := range res {
969
987
value , err := detachMagicByte (r .Value )
@@ -976,10 +994,19 @@ func (m *Meta) ListResourceGroups() ([]*model.ResourceGroupInfo, error) {
976
994
return nil , errors .Trace (err )
977
995
}
978
996
groups = append (groups , group )
997
+ hasDefault = hasDefault || (group .Name .L == "default" )
998
+ }
999
+ if ! hasDefault {
1000
+ groups = append (groups , defaultRGroupMeta )
979
1001
}
980
1002
return groups , nil
981
1003
}
982
1004
1005
+ // DefaultGroupMeta4Test return the default group info for test usage.
1006
+ func DefaultGroupMeta4Test () * model.ResourceGroupInfo {
1007
+ return defaultRGroupMeta
1008
+ }
1009
+
983
1010
// GetResourceGroup gets the database value with ID.
984
1011
func (m * Meta ) GetResourceGroup (groupID int64 ) (* model.ResourceGroupInfo , error ) {
985
1012
groupKey := m .resourceGroupKey (groupID )
@@ -988,6 +1015,10 @@ func (m *Meta) GetResourceGroup(groupID int64) (*model.ResourceGroupInfo, error)
988
1015
return nil , errors .Trace (err )
989
1016
}
990
1017
if value == nil {
1018
+ // the default group is not persistanted to tikv by default.
1019
+ if groupID == defaultGroupID {
1020
+ return defaultRGroupMeta , nil
1021
+ }
991
1022
return nil , ErrResourceGroupNotExists .GenWithStack ("resource group id : %d doesn't exist" , groupID )
992
1023
}
993
1024
0 commit comments