@@ -109,13 +109,37 @@ type Domain struct {
109
109
expensiveQueryHandle * expensivequery.Handle
110
110
memoryUsageAlarmHandle * memoryusagealarm.Handle
111
111
serverMemoryLimitHandle * servermemorylimit.Handle
112
+ << << << < HEAD
112
113
wg util.WaitGroupWrapper
113
114
statsUpdating atomicutil.Int32
114
115
cancel context.CancelFunc
115
116
indexUsageSyncLease time.Duration
116
117
dumpFileGcChecker * dumpFileGcChecker
117
118
expiredTimeStamp4PC types.Time
118
119
logBackupAdvancer * daemon.OwnerDaemon
120
+ == == == =
121
+ // TODO: use Run for each process in future pr
122
+ wg * util.WaitGroupEnhancedWrapper
123
+ statsUpdating atomicutil.Int32
124
+ cancel context.CancelFunc
125
+ indexUsageSyncLease time.Duration
126
+ dumpFileGcChecker * dumpFileGcChecker
127
+ planReplayerHandle * planReplayerHandle
128
+ extractTaskHandle * ExtractHandle
129
+ expiredTimeStamp4PC struct {
130
+ // let `expiredTimeStamp4PC` use its own lock to avoid any block across domain.Reload()
131
+ // and compiler.Compile(), see issue https://github.com/pingcap/tidb/issues/45400
132
+ sync.RWMutex
133
+ expiredTimeStamp types.Time
134
+ }
135
+
136
+ logBackupAdvancer * daemon.OwnerDaemon
137
+ historicalStatsWorker * HistoricalStatsWorker
138
+ ttlJobManager atomic.Pointer [ttlworker.JobManager ]
139
+ runawayManager * resourcegroup.RunawayManager
140
+ runawaySyncer * runawaySyncer
141
+ resourceGroupsController * rmclient.ResourceGroupsController
142
+ >> >> >> > 29727 caacb8 (domain : use dedicated lock for expiredTimeStamp4PC (#45802 ))
119
143
120
144
serverID uint64
121
145
serverIDSession * concurrency.Session
@@ -386,18 +410,18 @@ func (do *Domain) GetSnapshotMeta(startTS uint64) (*meta.Meta, error) {
386
410
387
411
// ExpiredTimeStamp4PC gets expiredTimeStamp4PC from domain.
388
412
func (do * Domain ) ExpiredTimeStamp4PC () types.Time {
389
- do .m . Lock ()
390
- defer do .m . Unlock ()
413
+ do .expiredTimeStamp4PC . RLock ()
414
+ defer do .expiredTimeStamp4PC . RUnlock ()
391
415
392
- return do .expiredTimeStamp4PC
416
+ return do .expiredTimeStamp4PC . expiredTimeStamp
393
417
}
394
418
395
419
// SetExpiredTimeStamp4PC sets the expiredTimeStamp4PC from domain.
396
420
func (do * Domain ) SetExpiredTimeStamp4PC (time types.Time ) {
397
- do .m .Lock ()
398
- defer do .m .Unlock ()
421
+ do .expiredTimeStamp4PC .Lock ()
422
+ defer do .expiredTimeStamp4PC .Unlock ()
399
423
400
- do .expiredTimeStamp4PC = time
424
+ do .expiredTimeStamp4PC . expiredTimeStamp = time
401
425
}
402
426
403
427
// DDL gets DDL from domain.
@@ -883,9 +907,13 @@ func NewDomain(store kv.Storage, ddlLease time.Duration, statsLease time.Duratio
883
907
infoCache : infoschema .NewCache (16 ),
884
908
slowQuery : newTopNSlowQueries (30 , time .Hour * 24 * 7 , 500 ),
885
909
indexUsageSyncLease : idxUsageSyncLease ,
910
+ << << << < HEAD
886
911
dumpFileGcChecker : & dumpFileGcChecker {gcLease : dumpFileGcLease , paths : []string {GetPlanReplayerDirName (), GetOptimizerTraceDirName ()}},
887
912
onClose : onClose ,
888
913
expiredTimeStamp4PC : types .NewTime (types .ZeroCoreTime , mysql .TypeTimestamp , types .DefaultFsp ),
914
+ == == == =
915
+ dumpFileGcChecker : & dumpFileGcChecker {gcLease : dumpFileGcLease , paths : []string {replayer .GetPlanReplayerDirName (), GetOptimizerTraceDirName (), GetExtractTaskDirName ()}},
916
+ >> >> >> > 29727 caacb8 (domain : use dedicated lock for expiredTimeStamp4PC (#45802 ))
889
917
mdlCheckTableInfo : & mdlCheckTableInfo {
890
918
mu : sync .Mutex {},
891
919
jobsVerMap : make (map [int64 ]int64 ),
@@ -899,6 +927,7 @@ func NewDomain(store kv.Storage, ddlLease time.Duration, statsLease time.Duratio
899
927
do .serverMemoryLimitHandle = servermemorylimit .NewServerMemoryLimitHandle (do .exit )
900
928
do .sysProcesses = SysProcesses {mu : & sync.RWMutex {}, procMap : make (map [uint64 ]sessionctx.Context )}
901
929
do .initDomainSysVars ()
930
+ do .expiredTimeStamp4PC .expiredTimeStamp = types .NewTime (types .ZeroCoreTime , mysql .TypeTimestamp , types .DefaultFsp )
902
931
return do
903
932
}
904
933
0 commit comments