File tree Expand file tree Collapse file tree 4 files changed +26
-1
lines changed Expand file tree Collapse file tree 4 files changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -792,6 +792,12 @@ func (d *ddl) Start(ctxPool *pools.ResourcePool) error {
792
792
defer d .sessPool .Put (ctx )
793
793
794
794
ingest .InitGlobalLightningEnv ()
795
+ d .ownerManager .SetRetireOwnerHook (func () {
796
+ // Since this instance is not DDL owner anymore, we clean up the processing job info.
797
+ if ingest .LitBackCtxMgr != nil {
798
+ ingest .LitBackCtxMgr .MarkJobFinish ()
799
+ }
800
+ })
795
801
796
802
return nil
797
803
}
Original file line number Diff line number Diff line change @@ -225,6 +225,7 @@ func (d *ddl) getReorgJob(sess *sess.Session) (*model.Job, error) {
225
225
return false , nil
226
226
}
227
227
if (job .Type == model .ActionAddIndex || job .Type == model .ActionAddPrimaryKey ) &&
228
+ job .State == model .JobStateQueueing &&
228
229
job .ReorgMeta != nil &&
229
230
job .ReorgMeta .IsFastReorg &&
230
231
ingest .LitBackCtxMgr != nil {
Original file line number Diff line number Diff line change @@ -65,6 +65,8 @@ type Manager interface {
65
65
66
66
// SetBeOwnerHook sets a hook. The hook is called before becoming an owner.
67
67
SetBeOwnerHook (hook func ())
68
+ // SetRetireOwnerHook will be called after retiring the owner.
69
+ SetRetireOwnerHook (hook func ())
68
70
}
69
71
70
72
const (
@@ -114,8 +116,10 @@ type ownerManager struct {
114
116
elec unsafe.Pointer
115
117
sessionLease * atomicutil.Int64
116
118
wg sync.WaitGroup
117
- beOwnerHook func ()
118
119
campaignCancel context.CancelFunc
120
+
121
+ beOwnerHook func ()
122
+ retireOwnerHook func ()
119
123
}
120
124
121
125
// NewOwnerManager creates a new Manager.
@@ -160,6 +164,10 @@ func (m *ownerManager) SetBeOwnerHook(hook func()) {
160
164
m .beOwnerHook = hook
161
165
}
162
166
167
+ func (m * ownerManager ) SetRetireOwnerHook (hook func ()) {
168
+ m .retireOwnerHook = hook
169
+ }
170
+
163
171
// ManagerSessionTTL is the etcd session's TTL in seconds. It's exported for testing.
164
172
var ManagerSessionTTL = 60
165
173
@@ -222,6 +230,9 @@ func (m *ownerManager) toBeOwner(elec *concurrency.Election) {
222
230
223
231
// RetireOwner make the manager to be a not owner.
224
232
func (m * ownerManager ) RetireOwner () {
233
+ if m .retireOwnerHook != nil {
234
+ m .retireOwnerHook ()
235
+ }
225
236
atomic .StorePointer (& m .elec , nil )
226
237
}
227
238
Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ type mockManager struct {
42
42
wg sync.WaitGroup
43
43
cancel context.CancelFunc
44
44
beOwnerHook func ()
45
+ retireHook func ()
45
46
campaignDone chan struct {}
46
47
resignDone chan struct {}
47
48
}
@@ -168,10 +169,16 @@ func (*mockManager) RequireOwner(context.Context) error {
168
169
return nil
169
170
}
170
171
172
+ // SetBeOwnerHook implements Manager.SetBeOwnerHook interface.
171
173
func (m * mockManager ) SetBeOwnerHook (hook func ()) {
172
174
m .beOwnerHook = hook
173
175
}
174
176
177
+ // SetRetireOwnerHook implements Manager.SetRetireOwnerHook interface.
178
+ func (m * mockManager ) SetRetireOwnerHook (hook func ()) {
179
+ m .retireHook = hook
180
+ }
181
+
175
182
// CampaignCancel implements Manager.CampaignCancel interface
176
183
func (m * mockManager ) CampaignCancel () {
177
184
m .campaignDone <- struct {}{}
You can’t perform that action at this time.
0 commit comments