diff --git a/domain/schema_validator.go b/domain/schema_validator.go index 2b4e5bc662748..cc91939250c65 100644 --- a/domain/schema_validator.go +++ b/domain/schema_validator.go @@ -17,6 +17,7 @@ import ( "sync" "time" + "github.com/pingcap/tidb/store/tikv/oracle" log "github.com/sirupsen/logrus" ) @@ -107,7 +108,7 @@ func (s *schemaValidator) Update(leaseGrantTS uint64, oldVer, currVer int64, cha // Renew the lease. s.latestSchemaVer = currVer - leaseGrantTime := extractPhysicalTime(leaseGrantTS) + leaseGrantTime := oracle.GetTimeFromTS(leaseGrantTS) leaseExpire := leaseGrantTime.Add(s.lease - time.Millisecond) s.latestSchemaExpire = leaseExpire @@ -187,18 +188,13 @@ func (s *schemaValidator) Check(txnTS uint64, schemaVer int64, relatedTableIDs [ } // Schema unchanged, maybe success or the schema validator is unavailable. - t := extractPhysicalTime(txnTS) + t := oracle.GetTimeFromTS(txnTS) if t.After(s.latestSchemaExpire) { return ResultUnknown } return ResultSucc } -func extractPhysicalTime(ts uint64) time.Time { - t := int64(ts >> 18) // 18 is for the logical time. - return time.Unix(t/1e3, (t%1e3)*1e6) -} - func (s *schemaValidator) enqueue(schemaVersion int64, relatedTableIDs []int64) { s.deltaSchemaInfos = append(s.deltaSchemaInfos, deltaSchemaInfo{schemaVersion, relatedTableIDs}) if len(s.deltaSchemaInfos) > maxNumberOfDiffsToLoad { diff --git a/store/tikv/oracle/oracle.go b/store/tikv/oracle/oracle.go index 6dc1779d3b2f6..39f2223ca4bae 100644 --- a/store/tikv/oracle/oracle.go +++ b/store/tikv/oracle/oracle.go @@ -57,5 +57,5 @@ func EncodeTSO(ts int64) uint64 { // GetTimeFromTS extracts time.Time from a timestamp. func GetTimeFromTS(ts uint64) time.Time { ms := ExtractPhysical(ts) - return time.Unix(ms/1000, (ms%1000)*1e6) + return time.Unix(ms/1e3, (ms%1e3)*1e6) }