Skip to content

Commit

Permalink
add fallback
Browse files Browse the repository at this point in the history
Signed-off-by: husharp <[email protected]>
  • Loading branch information
HuSharp committed Jul 19, 2023
1 parent 78966d8 commit dfe5ede
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 5 deletions.
27 changes: 22 additions & 5 deletions client/resource_group/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -486,14 +486,31 @@ func (c *ResourceGroupsController) IsBackgroundRequest(ctx context.Context,

gc.metaLock.RLock()
defer gc.metaLock.RUnlock()
if bg := gc.meta.BackgroundSettings; bg != nil {
if len(requestResource) == 0 || len(bg.JobTypes) == 0 {
log.Info("[resource group controller] checkBackgroundSettings resource group", zap.String("resource group", resourceGroupName))
return c.checkBackgroundSettings(ctx, gc.meta.BackgroundSettings, requestResource)
}

func (c *ResourceGroupsController) checkBackgroundSettings(ctx context.Context, bg *rmpb.BackgroundSettings, requestResource string) bool {
// fallback to default resource group.
if bg == nil {
resourceGroupName := "default"
gc, err := c.tryGetResourceGroup(ctx, resourceGroupName)
if err != nil {
log.Info("[resource group controller] fallback to default resource group failed", zap.Any("resource group", gc))
failedRequestCounter.WithLabelValues(resourceGroupName).Inc()
return false
}
if idx := strings.LastIndex(requestResource, "_"); idx != -1 {
return slices.Contains(bg.JobTypes, requestResource[idx+1:])
}
bg = gc.meta.BackgroundSettings
}

if bg == nil || len(requestResource) == 0 || len(bg.JobTypes) == 0 {
return false
}

if idx := strings.LastIndex(requestResource, "_"); idx != -1 {
return slices.Contains(bg.JobTypes, requestResource[idx+1:])
}

return false
}

Expand Down
22 changes: 22 additions & 0 deletions tests/integrations/mcs/resourcemanager/resource_manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1189,6 +1189,23 @@ func (suite *resourceManagerClientTestSuite) TestSkipConsumptionForBackgroundJob
re.Contains(resp, "Success!")
}

resp, err := cli.ModifyResourceGroup(suite.ctx, &rmpb.ResourceGroup{
Name: "default",
Mode: rmpb.GroupMode_RUMode,
RUSettings: &rmpb.GroupRequestUnitSettings{
RU: &rmpb.TokenBucket{
Settings: &rmpb.TokenLimitSettings{
FillRate: 1,
BurstLimit: -1,
},
Tokens: 1,
},
},
BackgroundSettings: &rmpb.BackgroundSettings{JobTypes: []string{"lightning", "ddl"}},
})
re.NoError(err)
re.Contains(resp, "Success!")

cfg := &controller.RequestUnitConfig{
ReadBaseCost: 1,
ReadCostPerByte: 1,
Expand All @@ -1201,10 +1218,15 @@ func (suite *resourceManagerClientTestSuite) TestSkipConsumptionForBackgroundJob

resourceGroupName := suite.initGroups[1].Name
re.False(c.IsBackgroundRequest(suite.ctx, resourceGroupName, "internal_default"))
// test fallback.
re.True(c.IsBackgroundRequest(suite.ctx, resourceGroupName, "internal_lightning"))
re.True(c.IsBackgroundRequest(suite.ctx, resourceGroupName, "internal_ddl"))

resourceGroupName = "background_job"
re.True(c.IsBackgroundRequest(suite.ctx, resourceGroupName, "internal_br"))
re.True(c.IsBackgroundRequest(suite.ctx, resourceGroupName, "internal_lightning"))
// test fallback.
re.False(c.IsBackgroundRequest(suite.ctx, resourceGroupName, "internal_ddl"))

c.Stop()
}

0 comments on commit dfe5ede

Please sign in to comment.