| 72 | } |
| 73 | |
| 74 | func New(maxEntityF maxEntityFunc, tenant string, limitLogger *tempo_log.RateLimitedLogger) *LocalEntityLimiter { |
| 75 | l := &LocalEntityLimiter{ |
| 76 | tenant: tenant, |
| 77 | entityActiveSeries: make(map[uint64]uint32), |
| 78 | maxEntityFunc: maxEntityF, |
| 79 | limitLogger: limitLogger, |
| 80 | |
| 81 | metricTotalEntitiesLimited: metrics.totalEntitiesLimited.WithLabelValues(tenant), |
| 82 | metricActiveEntities: metrics.activeEntities.WithLabelValues(tenant), |
| 83 | metricMaxActiveEntities: metrics.maxActiveEntities.WithLabelValues(tenant), |
| 84 | metricTotalEntitiesAdded: metrics.totalEntitiesAdded.WithLabelValues(tenant), |
| 85 | metricTotalEntitiesRemoved: metrics.totalEntitiesRemoved.WithLabelValues(tenant), |
| 86 | |
| 87 | overflowEntity: registry.OverflowEntity, |
| 88 | overflowEntityHash: registry.OverflowEntity.Hash(), |
| 89 | } |
| 90 | return l |
| 91 | } |
| 92 | |
| 93 | func (l *LocalEntityLimiter) OnAdd(labelHash uint64, seriesCount uint32, lbls labels.Labels) (labels.Labels, uint64) { |
| 94 | l.mtx.Lock() |