@@ -40,8 +40,8 @@ enum OutputFormat {
40
40
pub struct EventMonitor {
41
41
node_ids : Vec < NodeId > ,
42
42
pool_ids : Vec < NodeId > ,
43
- stage_length : u64 ,
44
43
maximum_ib_age : u64 ,
44
+ maximum_eb_age : u64 ,
45
45
events_source : mpsc:: UnboundedReceiver < ( Event , Timestamp ) > ,
46
46
output_path : Option < PathBuf > ,
47
47
}
@@ -63,8 +63,8 @@ impl EventMonitor {
63
63
Self {
64
64
node_ids,
65
65
pool_ids,
66
- stage_length,
67
66
maximum_ib_age,
67
+ maximum_eb_age : config. max_eb_age ,
68
68
events_source,
69
69
output_path,
70
70
}
@@ -85,6 +85,7 @@ impl EventMonitor {
85
85
let mut ibs_containing_tx: BTreeMap < TransactionId , f64 > = BTreeMap :: new ( ) ;
86
86
let mut ebs_containing_ib: BTreeMap < InputBlockId , f64 > = BTreeMap :: new ( ) ;
87
87
let mut pending_ibs: BTreeSet < InputBlockId > = BTreeSet :: new ( ) ;
88
+ let mut pending_ebs: BTreeSet < EndorserBlockId > = BTreeSet :: new ( ) ;
88
89
let mut votes_per_bundle: BTreeMap < VoteBundleId , f64 > = BTreeMap :: new ( ) ;
89
90
let mut votes_per_pool: BTreeMap < NodeId , f64 > =
90
91
self . pool_ids . into_iter ( ) . map ( |id| ( id, 0.0 ) ) . collect ( ) ;
@@ -99,6 +100,7 @@ impl EventMonitor {
99
100
let mut generated_ibs = 0u64 ;
100
101
let mut empty_ibs = 0u64 ;
101
102
let mut expired_ibs = 0u64 ;
103
+ let mut expired_ebs = 0u64 ;
102
104
let mut generated_ebs = 0u64 ;
103
105
let mut total_votes = 0u64 ;
104
106
let mut leios_blocks_with_endorsements = 0u64 ;
@@ -152,19 +154,24 @@ impl EventMonitor {
152
154
Event :: Slot { number } => {
153
155
info ! ( "Slot {number} has begun." ) ;
154
156
total_slots = number + 1 ;
155
- if number % self . stage_length == 0 {
156
- let Some ( oldest_live_stage) = number. checked_sub ( self . maximum_ib_age )
157
- else {
158
- continue ;
159
- } ;
157
+ if let Some ( oldest_live_ib_slot) = number. checked_sub ( self . maximum_ib_age ) {
160
158
pending_ibs. retain ( |ib| {
161
- if ib. slot < oldest_live_stage {
159
+ if ib. slot < oldest_live_ib_slot {
162
160
expired_ibs += 1 ;
163
161
return false ;
164
162
}
165
163
true
166
164
} ) ;
167
165
}
166
+ if let Some ( oldest_live_eb_slot) = number. checked_sub ( self . maximum_eb_age ) {
167
+ pending_ebs. retain ( |eb| {
168
+ if eb. slot < oldest_live_eb_slot {
169
+ expired_ebs += 1 ;
170
+ return false ;
171
+ }
172
+ true
173
+ } ) ;
174
+ }
168
175
}
169
176
Event :: CpuTaskScheduled { .. } => { }
170
177
Event :: CpuTaskFinished { .. } => { }
@@ -196,6 +203,8 @@ impl EventMonitor {
196
203
praos_txs += all_txs. len ( ) as u64 ;
197
204
if let Some ( endorsement) = endorsement {
198
205
leios_blocks_with_endorsements += 1 ;
206
+ pending_ebs. retain ( |eb| eb. slot != endorsement. eb . slot ) ;
207
+
199
208
let block_leios_txs: Vec < _ > = eb_ibs
200
209
. get ( & endorsement. eb )
201
210
. unwrap ( )
@@ -283,6 +292,7 @@ impl EventMonitor {
283
292
id, input_blocks, ..
284
293
} => {
285
294
generated_ebs += 1 ;
295
+ pending_ebs. insert ( id. clone ( ) ) ;
286
296
eb_ibs. insert ( id. clone ( ) , input_blocks. clone ( ) ) ;
287
297
for ib_id in & input_blocks {
288
298
* ibs_in_eb. entry ( id. clone ( ) ) . or_default ( ) += 1.0 ;
@@ -454,6 +464,10 @@ impl EventMonitor {
454
464
"{} out of {} IBs expired before they reached an EB." ,
455
465
expired_ibs, generated_ibs,
456
466
) ;
467
+ info ! (
468
+ "{} out of {} EBs expired before an EB from their stage reached an RB." ,
469
+ expired_ebs, generated_ebs,
470
+ ) ;
457
471
info ! (
458
472
"{} out of {} transaction(s) were included in at least one EB." ,
459
473
times_to_reach_eb. len( ) , txs. len( ) ,
0 commit comments