Release v3.1.2
v3.1.2
Performance improvements and async metrics fixes (recordMetricsSync handler,
single flush, deferred cache invalidation, cheaper query IDs).
See docs/CHANGELOG.md.
Changelog
Fixed
- Async metrics –
RecordMetricsMessageHandlernow callsrecordMetricsSync()instead ofrecordMetrics(), fixing re-dispatch loops and ensuring metrics are persisted whenasync: true. - Async access records –
RecordMetricsMessageincludes optionalstatusCodeso HTTP status is stored onRouteDataRecordin async mode.
Changed
- Performance –
recordMetricsSync()persistsRouteDataandRouteDataRecordin a single Doctrineflush()(was two). - Performance – Statistics cache invalidation bumps a generation counter instead of calling
deleteItem()on every write (PerformanceCacheService). - Performance – Query IDs in
QueryTrackingMiddlewareuse a lightweight counter instead ofmd5()+uniqid()per query. - Performance – Removed unused
QueryLoggerwiring and redundant middleware reset fromPerformanceMetricsSubscriber(reset remains inQueryTrackingConnectionSubscriber). - Performance –
QueryTrackingConnectionSubscriberapplies middleware once per request (removedusleepretry loop). - API –
PerformanceMetricsService::recordMetricsSync()is now public (used by the async handler).
Notes
- Breaking for positional
RecordMetricsMessageconstruction – optionalstatusCodewas inserted afterhttpMethod. Use named arguments or drain the Messenger queue before upgrading ifasync: true. See UPGRADING.md.