mirror of
https://github.com/hanzoai/tasks.git
synced 2026-10-30 14:56:19 +00:00
## What changed?
<!-- Describe what has changed in this PR -->
Remove license header from every file. Because it is really hard to
follow in this PR here is the summary:
1. License header is removed from all `.go` and `.proto` files
:fireworks::fireworks:🎆.
2. `LICENSE` file in the root directory has only Temporal and Uber
copyrights.
3. 5 other `LICENSE` files added to the packages which have copyrights
different from Temporal and Uber: Datadog, Xargin, "Mat Ryer, Tyler
Bunnell and contributors".
4. `license_file` flag is removed from all code generation tools.
5. `copyright_file` flag is removed from `go:generate mockgen`
directive.
6. All copyright related targets are removed from `Makefile`.
7. Updated Temporal copyright year to 2025 everywhere.
## Why?
<!-- Tell your future self why have you made these changes -->
I double checked with legal department that it is not needed to have
license header in every file. One file per repo is enough. I put all
copyrights to the root `LICENSE` file and removed header from all other
files. Also updated tools and `Makefile`.
75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
package matching
|
|
|
|
import (
|
|
"time"
|
|
|
|
taskqueuepb "go.temporal.io/api/taskqueue/v1"
|
|
"go.temporal.io/server/common/cache"
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
"google.golang.org/protobuf/types/known/wrapperspb"
|
|
)
|
|
|
|
const (
|
|
pollerHistoryInitMaxSize = 1000
|
|
)
|
|
|
|
type (
|
|
pollerIdentity string
|
|
|
|
pollerInfo struct {
|
|
pollMetadata
|
|
}
|
|
)
|
|
|
|
type pollerHistory struct {
|
|
// poller ID -> pollerInfo
|
|
// pollers map[pollerID]pollerInfo
|
|
history cache.Cache
|
|
}
|
|
|
|
func newPollerHistory(pollerHistoryTTL time.Duration) *pollerHistory {
|
|
opts := &cache.Options{
|
|
TTL: pollerHistoryTTL,
|
|
Pin: false,
|
|
}
|
|
|
|
return &pollerHistory{
|
|
history: cache.New(pollerHistoryInitMaxSize, opts),
|
|
}
|
|
}
|
|
|
|
func (pollers *pollerHistory) updatePollerInfo(id pollerIdentity, pollMetadata *pollMetadata) {
|
|
pollers.history.Put(id, &pollerInfo{pollMetadata: *pollMetadata})
|
|
}
|
|
|
|
func (pollers *pollerHistory) getPollerInfo(earliestAccessTime time.Time) []*taskqueuepb.PollerInfo {
|
|
var result []*taskqueuepb.PollerInfo
|
|
|
|
ite := pollers.history.Iterator()
|
|
defer ite.Close()
|
|
for ite.HasNext() {
|
|
entry := ite.Next()
|
|
key := entry.Key().(pollerIdentity)
|
|
value := entry.Value().(*pollerInfo)
|
|
lastAccessTime := entry.CreateTime()
|
|
if earliestAccessTime.Before(lastAccessTime) {
|
|
result = append(result, &taskqueuepb.PollerInfo{
|
|
Identity: string(key),
|
|
LastAccessTime: timestamppb.New(lastAccessTime),
|
|
RatePerSecond: defaultRPS(value.taskQueueMetadata.GetMaxTasksPerSecond()),
|
|
WorkerVersionCapabilities: value.workerVersionCapabilities,
|
|
DeploymentOptions: value.deploymentOptions,
|
|
})
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func defaultRPS(wrapper *wrapperspb.DoubleValue) float64 {
|
|
if wrapper != nil {
|
|
return wrapper.Value
|
|
}
|
|
return defaultTaskDispatchRPS
|
|
}
|