P0-1 (limits.go): Allow()方法改为全程使用写锁保护counters map读写,避免RLock写入时的data race P0-2 (ticket_workflow.go+ticket_handler.go): Assign/Resolve/Close操作先查询ticket存在性和状态,返回明确的CS_TICKET_4001/CS_TKT_4002/CS_TICKET_4092/CS_TICKET_4093错误码,handler根据错误前缀路由HTTP状态码 P1-1 (ticket_store.go): 移除GetStats中3处手动rows.Close(),只保留defer Close()
32 lines
433 B
Go
32 lines
433 B
Go
package health
|
|
|
|
import "sync/atomic"
|
|
|
|
type Probe struct {
|
|
live atomic.Bool
|
|
ready atomic.Bool
|
|
}
|
|
|
|
func NewProbe() *Probe {
|
|
p := &Probe{}
|
|
p.live.Store(true)
|
|
p.ready.Store(false)
|
|
return p
|
|
}
|
|
|
|
func (p *Probe) IsLive() bool {
|
|
return p.live.Load()
|
|
}
|
|
|
|
func (p *Probe) IsReady() bool {
|
|
return p.ready.Load()
|
|
}
|
|
|
|
func (p *Probe) SetLive(live bool) {
|
|
p.live.Store(live)
|
|
}
|
|
|
|
func (p *Probe) SetReady(ready bool) {
|
|
p.ready.Store(ready)
|
|
}
|