Skip to content

Commit

Permalink
add log
Browse files Browse the repository at this point in the history
  • Loading branch information
wshwsh12 committed Jun 6, 2024
1 parent 601de00 commit 1587299
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions pkg/util/sqlkiller/sqlkiller.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ type SQLKiller struct {
// SendKillSignal sends a kill signal to the query.
func (killer *SQLKiller) SendKillSignal(reason killSignal) {
if atomic.CompareAndSwapUint32(&killer.Signal, 0, reason) {
logutil.BgLogger().Warn("kill query start", zap.Uint64("conn", killer.ConnID), zap.Uint32("reason", uint32(reason)))
status := atomic.LoadUint32(&killer.Signal)
err := killer.getKillError(status)
logutil.BgLogger().Warn("kill query started", zap.Uint64("conn", killer.ConnID), zap.String("reason", err.Error()))
}
}

Expand All @@ -56,6 +58,21 @@ func (killer *SQLKiller) GetKillSignal() killSignal {
return killSignal(atomic.LoadUint32(&killer.Signal))
}

// getKillError gets the error according to the kill signal.
func (killer *SQLKiller) getKillError(status killSignal) error {
switch status {
case QueryInterrupted:
return exeerrors.ErrQueryInterrupted.GenWithStackByArgs()
case MaxExecTimeExceeded:
return exeerrors.ErrMaxExecTimeExceeded.GenWithStackByArgs()
case QueryMemoryExceeded:
return exeerrors.ErrMemoryExceedForQuery.GenWithStackByArgs(killer.ConnID)
case ServerMemoryExceeded:
return exeerrors.ErrMemoryExceedForInstance.GenWithStackByArgs(killer.ConnID)
}
return nil
}

// FinishResultSet is used to finish the result set.
// If the cancel signal is received and SQL is waiting for network IO, resource released can be performed first.
func (killer *SQLKiller) FinishResultSet() {
Expand All @@ -77,19 +94,13 @@ func (killer *SQLKiller) HandleSignal() error {
}
})
status := atomic.LoadUint32(&killer.Signal)
err := killer.getKillError(status)
switch status {
case QueryInterrupted:
return exeerrors.ErrQueryInterrupted.GenWithStackByArgs()
case MaxExecTimeExceeded:
return exeerrors.ErrMaxExecTimeExceeded.GenWithStackByArgs()
case QueryMemoryExceeded:
return exeerrors.ErrMemoryExceedForQuery.GenWithStackByArgs(killer.ConnID)
case ServerMemoryExceeded:
logutil.BgLogger().Warn("global memory controller, NeedKill signal is received successfully",
zap.Uint64("conn", killer.ConnID))
return exeerrors.ErrMemoryExceedForInstance.GenWithStackByArgs(killer.ConnID)
}
return nil
return err
}

// Reset resets the SqlKiller.
Expand Down

0 comments on commit 1587299

Please sign in to comment.