-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
controller.go
99 lines (71 loc) · 3.13 KB
/
controller.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
Copyright 2019 The Vitess Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package tabletserver
import (
"context"
"vitess.io/vitess/go/vt/dbconfigs"
"vitess.io/vitess/go/vt/mysqlctl"
"vitess.io/vitess/go/vt/topo"
"vitess.io/vitess/go/vt/vttablet/queryservice"
"vitess.io/vitess/go/vt/vttablet/tabletserver/rules"
"vitess.io/vitess/go/vt/vttablet/tabletserver/schema"
"vitess.io/vitess/go/vt/vttablet/tabletserver/tabletenv"
"vitess.io/vitess/go/vt/vttablet/vexec"
"time"
querypb "vitess.io/vitess/go/vt/proto/query"
topodatapb "vitess.io/vitess/go/vt/proto/topodata"
)
// Controller defines the control interface for TabletServer.
type Controller interface {
// Register registers this query service with the RPC layer.
Register()
// AddStatusHeader adds the header part to the status page.
AddStatusHeader()
// AddStatusHeader adds the status part to the status page
AddStatusPart()
// Stats returns stats vars.
Stats() *tabletenv.Stats
// InitDBConfig sets up the db config vars.
InitDBConfig(target *querypb.Target, dbConfigs *dbconfigs.DBConfigs, mysqlDaemon mysqlctl.MysqlDaemon) error
// SetServingType transitions the query service to the required serving type.
// Returns true if the state of QueryService or the tablet type changed.
SetServingType(tabletType topodatapb.TabletType, terTimestamp time.Time, serving bool, reason string) error
// EnterLameduck causes tabletserver to enter the lameduck state.
EnterLameduck()
// IsServing returns true if the query service is running
IsServing() bool
// IsHealthy returns the health status of the QueryService
IsHealthy() error
// ClearQueryPlanCache clears internal query plan cache
ClearQueryPlanCache()
// ReloadSchema makes the quey service reload its schema cache
ReloadSchema(ctx context.Context) error
// RegisterQueryRuleSource adds a query rule source
RegisterQueryRuleSource(ruleSource string)
// RegisterQueryRuleSource removes a query rule source
UnRegisterQueryRuleSource(ruleSource string)
// SetQueryRules sets the query rules for this QueryService
SetQueryRules(ruleSource string, qrs *rules.Rules) error
// QueryService returns the QueryService object used by this Controller
QueryService() queryservice.QueryService
// OnlineDDLExecutor the online DDL executor used by this Controller
OnlineDDLExecutor() vexec.Executor
// SchemaEngine returns the SchemaEngine object used by this Controller
SchemaEngine() *schema.Engine
// BroadcastHealth sends the current health to all listeners
BroadcastHealth()
// TopoServer returns the topo server.
TopoServer() *topo.Server
}
// Ensure TabletServer satisfies Controller interface.
var _ Controller = (*TabletServer)(nil)