-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sql: tenant resource limits configuration API
This commit adds a `crdb_internal.update_tenant_resource_limits` internal SQL function (to be used by the system tenant) which updates the token bucket configuration for a specific tenant. Release note: None
- Loading branch information
1 parent
304a9e6
commit 8cc783c
Showing
12 changed files
with
282 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# LogicTest: !3node-tenant | ||
|
||
query error tenant "13" does not exist | ||
SELECT crdb_internal.update_tenant_resource_limits(13, 1000, 100, 0, now(), 0) | ||
|
||
query I | ||
SELECT crdb_internal.create_tenant(5) | ||
---- | ||
5 | ||
|
||
# TODO(radu): inspect internal tenant_usage state. | ||
|
||
statement ok | ||
SELECT crdb_internal.update_tenant_resource_limits(5, 1000, 100, 0, now(), 0) | ||
|
||
# TODO(radu): inspect internal tenant_usage state. | ||
|
||
# Note this just marks the tenant as dropped but does not call GC. | ||
query I | ||
SELECT crdb_internal.destroy_tenant(5) | ||
---- | ||
5 | ||
|
||
query error tenant "5" is not active | ||
SELECT crdb_internal.update_tenant_resource_limits(5, 1000, 100, 0, now(), 0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
// Copyright 2021 The Cockroach Authors. | ||
// | ||
// Licensed as a CockroachDB Enterprise file under the Cockroach Community | ||
// License (the "License"); you may not use this file except in compliance with | ||
// the License. You may obtain a copy of the License at | ||
// | ||
// https://github.com/cockroachdb/cockroach/blob/master/licenses/CCL.txt | ||
|
||
package tenantcostserver | ||
|
||
import ( | ||
"context" | ||
"time" | ||
|
||
"github.com/cockroachdb/cockroach/pkg/kv" | ||
"github.com/cockroachdb/cockroach/pkg/roachpb" | ||
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" | ||
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" | ||
"github.com/cockroachdb/cockroach/pkg/sql/sem/tree" | ||
"github.com/cockroachdb/cockroach/pkg/sql/sessiondata" | ||
"github.com/cockroachdb/cockroach/pkg/util/timeutil" | ||
"github.com/cockroachdb/errors" | ||
) | ||
|
||
// ReconfigureTokenBucket updates a tenant's token bucket settings. It is part | ||
// of the TenantUsageServer interface; see that for more details. | ||
func (s *instance) ReconfigureTokenBucket( | ||
ctx context.Context, | ||
txn *kv.Txn, | ||
tenantID roachpb.TenantID, | ||
availableRU float64, | ||
refillRate float64, | ||
maxBurstRU float64, | ||
asOf time.Time, | ||
asOfConsumedRequestUnits float64, | ||
) error { | ||
row, err := s.executor.QueryRowEx( | ||
ctx, "check-tenant", txn, sessiondata.NodeUserSessionDataOverride, | ||
`SELECT active FROM system.tenants WHERE id = $1`, tenantID.ToUint64(), | ||
) | ||
if err != nil { | ||
return err | ||
} | ||
if row == nil { | ||
return pgerror.Newf(pgcode.UndefinedObject, "tenant %q does not exist", tenantID) | ||
} | ||
if active := *row[0].(*tree.DBool); !active { | ||
return errors.Errorf("tenant %q is not active", tenantID) | ||
} | ||
state, err := readTenantUsageState(ctx, s.executor, txn, tenantID) | ||
if err != nil { | ||
return err | ||
} | ||
state.Seq++ | ||
state.Bucket.Reconfigure( | ||
availableRU, refillRate, maxBurstRU, asOf, asOfConsumedRequestUnits, | ||
timeutil.Now(), state.Consumption.RU, | ||
) | ||
if err := updateTenantUsageState(ctx, s.executor, txn, tenantID, state); err != nil { | ||
return err | ||
} | ||
return nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters