Describe the bug
Description
The throughput report generated by the licensing component reports a TotalThroughput that does not match the published definition of daily throughput. The pricing definitions page defines maximum message throughput per day as:
The maximum number of messages processed by all NServiceBus endpoints across the entire organization in a day.
That is: for each calendar day, sum the messages processed by all endpoints, then take the day with the highest total.
However, GenerateThroughputReport in src/Particular.LicensingComponent/ThroughputCollector.cs computes it the other way around: it first takes each endpoint's best single day (Throughput = endpointData.ThroughputData.MaxDailyThroughput()) and then sums those per-endpoint peaks (TotalThroughput = queueThroughputs.Sum(q => q.Throughput ?? 0)).
Unless every endpoint happens to peak on the same day, the sum of per-endpoint maxima is strictly greater than the maximum daily total. The more queues a system has and the longer the reporting window, the larger the overstatement — for a system with hundreds of queues reporting over many months, TotalThroughput can overstate the actual peak day severalfold. Since this report is used in licensing/tier conversations, the overstatement directly affects customers.
Example
Two endpoints, two days:
|
Day 1 |
Day 2 |
Endpoint max |
| Endpoint A |
100 |
10 |
100 |
| Endpoint B |
20 |
100 |
100 |
| Daily total |
120 |
110 |
|
- Reported
TotalThroughput today: 100 + 100 = 200
- Per the published definition: max(120, 110) = 120
Expected behavior
TotalThroughput equals the maximum over calendar days of the organization-wide daily sum, matching the published definition.
Versions
Observed in ServiceControl 6.18.0 (current master behaves the same; the unit test Should_return_correct_throughput_in_report_when_data_only_from_one_source encodes the sum-of-maxima expectation).
Additional context
I have a fix ready and will open a PR referencing this issue.
Describe the bug
Description
The throughput report generated by the licensing component reports a
TotalThroughputthat does not match the published definition of daily throughput. The pricing definitions page defines maximum message throughput per day as:That is: for each calendar day, sum the messages processed by all endpoints, then take the day with the highest total.
However,
GenerateThroughputReportinsrc/Particular.LicensingComponent/ThroughputCollector.cscomputes it the other way around: it first takes each endpoint's best single day (Throughput = endpointData.ThroughputData.MaxDailyThroughput()) and then sums those per-endpoint peaks (TotalThroughput = queueThroughputs.Sum(q => q.Throughput ?? 0)).Unless every endpoint happens to peak on the same day, the sum of per-endpoint maxima is strictly greater than the maximum daily total. The more queues a system has and the longer the reporting window, the larger the overstatement — for a system with hundreds of queues reporting over many months,
TotalThroughputcan overstate the actual peak day severalfold. Since this report is used in licensing/tier conversations, the overstatement directly affects customers.Example
Two endpoints, two days:
TotalThroughputtoday: 100 + 100 = 200Expected behavior
TotalThroughputequals the maximum over calendar days of the organization-wide daily sum, matching the published definition.Versions
Observed in ServiceControl 6.18.0 (current
masterbehaves the same; the unit testShould_return_correct_throughput_in_report_when_data_only_from_one_sourceencodes the sum-of-maxima expectation).Additional context
I have a fix ready and will open a PR referencing this issue.