diff --git a/internal/loadbalance/balancer.go b/internal/loadbalance/balancer.go index 43a9bd9..1bf1fda 100644 --- a/internal/loadbalance/balancer.go +++ b/internal/loadbalance/balancer.go @@ -41,7 +41,8 @@ var filterContextPool = sync.Pool{ } func acquireFilterContext() *filterContext { - return filterContextPool.Get().(*filterContext) + fc, _ := filterContextPool.Get().(*filterContext) + return fc } func releaseFilterContext(fc *filterContext) { @@ -633,5 +634,3 @@ func (t *Target) LastResolved() time.Time { } return time.Unix(0, nano) } - - diff --git a/internal/matcher/radix.go b/internal/matcher/radix.go index d166898..dbf8d46 100644 --- a/internal/matcher/radix.go +++ b/internal/matcher/radix.go @@ -229,7 +229,7 @@ func (t *RadixTree) FindLongestPrefix(path string) *MatchResult { if bestNode == nil { return nil } - result := matchResultPool.Get().(*MatchResult) + result, _ := matchResultPool.Get().(*MatchResult) result.Handler = bestNode.handler result.Path = bestNode.prefix result.Priority = bestNode.priority @@ -271,6 +271,7 @@ func (t *RadixTree) searchLongest(node *RadixNode, path string, bestNode *RadixN return bestNode } +// ReleaseMatchResult 将 MatchResult 归还到对象池。 func ReleaseMatchResult(r *MatchResult) { if r == nil { return diff --git a/internal/resolver/resolver.go b/internal/resolver/resolver.go index 113ede5..fc5a43d 100644 --- a/internal/resolver/resolver.go +++ b/internal/resolver/resolver.go @@ -83,7 +83,7 @@ func (r *DNSResolver) evictLRULocked() { if oldest == nil { return } - host := oldest.Value.(string) + host, _ := oldest.Value.(string) delete(r.cache, host) delete(r.lruIndex, host) r.lruList.Remove(oldest)