@@ -62,7 +62,7 @@ private async Task<RouterResult> ExecuteAsync(
6262 catch ( RouteResolutionException ex )
6363 {
6464 var failure = new RouterResult { Success = false , StatusCode = 400 , FailureKind = ProviderFailureKind . InvalidRequest , ErrorMessage = ex . Message } ;
65- RecordSafe ( failure , model , RoutingStrategy . Fallback , false , null , null , requestStarted , 0 ) ;
65+ RecordSafe ( failure , model , RoutingStrategy . Fallback , false , null , null , null , requestStarted , 0 ) ;
6666 return failure ;
6767 }
6868
@@ -74,7 +74,7 @@ private async Task<RouterResult> ExecuteAsync(
7474 if ( resolved . Length == 0 )
7575 {
7676 var unavailable = Unavailable ( "No enabled providers are available for this route." ) ;
77- RecordSafe ( unavailable , route . RouteId , route . Strategy , route . Pinned , null , null , requestStarted , 0 ) ;
77+ RecordSafe ( unavailable , route . RouteId , route . Strategy , route . Pinned , null , null , null , requestStarted , 0 ) ;
7878 return unavailable ;
7979 }
8080
@@ -84,7 +84,6 @@ private async Task<RouterResult> ExecuteAsync(
8484 var affinitySource = requestContext ? . AffinitySource ?? "route" ;
8585 var classification = route . Pinned ? "pinned" : "route" ;
8686 var affinityApplied = false ;
87- AffinityEntry ? priorAffinity = null ;
8887
8988 if ( route . Strategy == RoutingStrategy . RoundRobin && ! route . Pinned && eligible . Length > 1 )
9089 {
@@ -100,7 +99,6 @@ private async Task<RouterResult> ExecuteAsync(
10099 if ( index >= 0 )
101100 {
102101 eligible = Rotate ( eligible , index ) ;
103- priorAffinity = stored ;
104102 affinityApplied = true ;
105103 classification = "hit" ;
106104 }
@@ -118,6 +116,7 @@ private async Task<RouterResult> ExecuteAsync(
118116
119117 ProviderResponse ? lastResponse = null ;
120118 ResolvedTarget ? lastTarget = null ;
119+ ProviderDefinition ? lastDefinition = null ;
121120 var attempts = 0 ;
122121 foreach ( var item in eligible )
123122 {
@@ -143,24 +142,25 @@ private async Task<RouterResult> ExecuteAsync(
143142 _affinity . Set ( route . RouteId , key , item . Target , DateTimeOffset . UtcNow , _options . StickyAffinityTtl ) ;
144143 }
145144 var mapped = Map ( response , item . Target , route , affinityApplied , affinitySource , rebound , attempts > 1 , attempts , classification ) ;
146- RecordSafe ( mapped , route . RouteId , route . Strategy , route . Pinned , response , item . Target , requestStarted , attempts ) ;
145+ RecordSafe ( mapped , route . RouteId , route . Strategy , route . Pinned , response , item . Target , item . Provider . Definition , requestStarted , attempts ) ;
147146 return mapped ;
148147 }
149148
150149 MarkFailure ( item . Provider , response , latency ) ;
151150 lastResponse = response ;
152151 lastTarget = item . Target ;
152+ lastDefinition = item . Provider . Definition ;
153153 if ( response . StreamCommitted || response . FailureKind is ProviderFailureKind . InvalidRequest or ProviderFailureKind . Cancelled )
154154 {
155155 var terminal = Map ( response , item . Target , route , affinityApplied , affinitySource , false , attempts > 1 , attempts , classification ) ;
156- RecordSafe ( terminal , route . RouteId , route . Strategy , route . Pinned , response , item . Target , requestStarted , attempts ) ;
156+ RecordSafe ( terminal , route . RouteId , route . Strategy , route . Pinned , response , item . Target , item . Provider . Definition , requestStarted , attempts ) ;
157157 return terminal ;
158158 }
159159 if ( route . Pinned ) break ;
160160 }
161161
162162 var result = Map ( lastResponse ! , lastTarget ! , route , affinityApplied , affinitySource , false , attempts > 1 , attempts , classification ) ;
163- RecordSafe ( result , route . RouteId , route . Strategy , route . Pinned , lastResponse , lastTarget , requestStarted , attempts ) ;
163+ RecordSafe ( result , route . RouteId , route . Strategy , route . Pinned , lastResponse , lastTarget , lastDefinition , requestStarted , attempts ) ;
164164 return result ;
165165 }
166166
@@ -171,13 +171,14 @@ private void RecordSafe(
171171 bool pinned ,
172172 ProviderResponse ? response ,
173173 ResolvedTarget ? target ,
174+ ProviderDefinition ? definition ,
174175 long requestStarted ,
175176 int attempts )
176177 {
177178 try
178179 {
179- var definition = target is null ? null : FindProvider ( target . ProviderId ) ? . Definition ;
180- var cost = CostEstimator . Resolve ( response ? . Usage , definition ) ;
180+ var usage = response ? . Usage ;
181+ var cost = CostEstimator . Resolve ( usage , definition ) ;
181182 _telemetry . Record ( new RouterTelemetryRecord (
182183 DateTimeOffset . UtcNow ,
183184 routeId ,
@@ -190,7 +191,7 @@ private void RecordSafe(
190191 result . AffinityClassification ,
191192 attempts ,
192193 Stopwatch . GetElapsedTime ( requestStarted ) ,
193- response ? . Usage ,
194+ usage ,
194195 cost ? . Value ,
195196 cost ? . Source ,
196197 result . Success ,
0 commit comments