-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
controller.go
90 lines (65 loc) · 2.93 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
/*
Copyright 2017 Google Inc.
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 (
"golang.org/x/net/context"
"vitess.io/vitess/go/vt/dbconfigs"
"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"
"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()
// AddStatusPart adds the status part to the status page
AddStatusPart()
// InitDBConfig sets up the db config vars.
InitDBConfig(querypb.Target, *dbconfigs.DBConfigs) 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, serving bool, alsoAllow []topodatapb.TabletType) (bool, 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
// SchemaEngine returns the SchemaEngine object used by this Controller
SchemaEngine() *schema.Engine
// BroadcastHealth sends the current health to all listeners
BroadcastHealth(terTimestamp int64, stats *querypb.RealtimeStats)
// HeartbeatLag returns the current lag as calculated by the heartbeat
// package, if heartbeat is enabled. Otherwise returns 0.
HeartbeatLag() (time.Duration, error)
// TopoServer returns the topo server.
TopoServer() *topo.Server
}
// Ensure TabletServer satisfies Controller interface.
var _ Controller = (*TabletServer)(nil)