2023-01-17 13:01:20 +05:30
|
|
|
package dns
|
|
|
|
|
|
2024-06-27 07:44:43 +00:00
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/cespare/xxhash"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// TmplClusterKey generates a unique key for the request
|
|
|
|
|
// to be used in the clustering process.
|
|
|
|
|
func (request *Request) TmplClusterKey() uint64 {
|
|
|
|
|
recursion := ""
|
2023-01-17 18:20:05 +05:30
|
|
|
if request.Recursion != nil {
|
2024-06-27 07:44:43 +00:00
|
|
|
recursion = fmt.Sprintf("%t", *request.Recursion)
|
2023-01-17 18:20:05 +05:30
|
|
|
}
|
2024-06-27 07:44:43 +00:00
|
|
|
inp := fmt.Sprintf("%s-%d-%d-%d-%s", request.Name, request.class, request.Retries, request.question, recursion)
|
|
|
|
|
return xxhash.Sum64String(inp)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// IsClusterable returns true if the request is eligible to be clustered.
|
|
|
|
|
func (request *Request) IsClusterable() bool {
|
2025-07-01 00:40:44 +07:00
|
|
|
return len(request.Resolvers) <= 0 && !request.Trace && request.ID == ""
|
2023-01-17 13:01:20 +05:30
|
|
|
}
|