@@ -196,7 +196,10 @@ impl IngressSelector for IngressManager {
196196 Ok ( ( ) ) => ( ) ,
197197 Err ( ValidationError :: InvalidArtifact (
198198 InvalidIngressPayloadReason :: IngressPayloadTooManyMessages ( _, _) ,
199- ) ) => break ' outer,
199+ ) ) => {
200+ self . metrics . observe_limit_reached ( "messages_count_limit" ) ;
201+ break ' outer;
202+ }
200203 _ => {
201204 queue. msgs . pop ( ) ;
202205 continue ;
@@ -206,9 +209,12 @@ impl IngressSelector for IngressManager {
206209 let size_estimates = self . message_size_estimates ( & ingress. signed_ingress ) ;
207210
208211 // Break criterion #1: global byte limit
209- if accumulated_wire_size + size_estimates. wire > wire_byte_limit
210- || accumulated_memory_size + size_estimates. memory > memory_byte_limit
211- {
212+ if accumulated_wire_size + size_estimates. wire > wire_byte_limit {
213+ self . metrics . observe_limit_reached ( "wire_byte_limit" ) ;
214+ break ' outer;
215+ }
216+ if accumulated_memory_size + size_estimates. memory > memory_byte_limit {
217+ self . metrics . observe_limit_reached ( "memory_byte_limit" ) ;
212218 break ' outer;
213219 }
214220
@@ -247,9 +253,12 @@ impl IngressSelector for IngressManager {
247253 }
248254 }
249255
250- if wire_byte_limit <= accumulated_wire_size
251- || memory_byte_limit <= accumulated_memory_size
252- {
256+ if wire_byte_limit <= accumulated_wire_size {
257+ self . metrics . observe_limit_reached ( "wire_byte_limit" ) ;
258+ // No remaining quota means the block is full. No more iterations needed.
259+ break ;
260+ } else if memory_byte_limit <= accumulated_memory_size {
261+ self . metrics . observe_limit_reached ( "memory_byte_limit" ) ;
253262 // No remaining quota means the block is full. No more iterations needed.
254263 break ;
255264 } else {
@@ -291,6 +300,7 @@ impl IngressSelector for IngressManager {
291300 wire_byte_limit. get( )
292301 ) ;
293302 messages_in_payload. pop ( ) ;
303+ self . metrics . observe_limit_reached ( "serialized" ) ;
294304 if messages_in_payload. is_empty ( ) {
295305 break IngressPayload :: default ( ) ;
296306 }
@@ -305,6 +315,7 @@ impl IngressSelector for IngressManager {
305315
306316 debug_assert ! ( size_estimates. wire <= wire_byte_limit) ;
307317 debug_assert ! ( size_estimates. memory <= memory_byte_limit) ;
318+ debug_assert ! ( payload. payload. message_count( ) <= settings. max_ingress_messages_per_block) ;
308319 payload
309320 }
310321
0 commit comments