Skip to content

Commit fc6d7cf

Browse files
committed
feat(repair,replay): wire chainer with repair and replay
1 parent 81a676b commit fc6d7cf

File tree

16 files changed

+379
-312
lines changed

16 files changed

+379
-312
lines changed

src/app/firedancer/topology.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ fd_topo_initialize( config_t * config ) {
340340

341341
FOR(shred_tile_cnt) fd_topob_link( topo, "repair_shred", "shred_repair", pending_fec_shreds_depth, sizeof(fd_ed25519_sig_t), 1UL );
342342
/**/ fd_topob_link( topo, "sign_repair", "sign_repair", 128UL, 64UL, 1UL );
343-
/**/ fd_topob_link( topo, "repair_repla", "repair_repla", 2048UL, sizeof(ulong), 1UL );
343+
/**/ fd_topob_link( topo, "repair_repla", "repair_repla", 65536UL, sizeof(ulong), 1UL );
344344
/**/ fd_topob_link( topo, "store_replay", "store_replay", 32768UL, sizeof(ulong), 64UL );
345345
FOR(bank_tile_cnt) fd_topob_link( topo, "replay_poh", "replay_poh", 128UL, (4096UL*sizeof(fd_txn_p_t))+sizeof(fd_microblock_trailer_t), 1UL );
346346
/**/ fd_topob_link( topo, "replay_notif", "replay_notif", FD_REPLAY_NOTIF_DEPTH, FD_REPLAY_NOTIF_MTU, 1UL );

src/disco/fd_disco_base.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,17 +242,16 @@ fd_disco_repair_replay_sig( ulong slot, ushort parent_off, uint data_cnt, int sl
242242
| [32, 63] | [16, 31] | [1, 16] | [0]
243243
*/
244244
ulong slot_ul = fd_ulong_min( slot, (ulong)UINT_MAX );
245-
ulong data_cnt_ul = fd_ulong_min( (ulong)data_cnt, (ulong)FD_SHRED_BLK_MAX );
246245
ulong parent_off_ul = (ulong)parent_off;
247246
ulong data_cnt_ul = fd_ulong_min( (ulong)data_cnt, (ulong)FD_SHRED_BLK_MAX );
248247
ulong slot_complete_ul = !!slot_complete;
249248
return slot_ul << 32 | parent_off_ul << 16 | data_cnt_ul << 1 | slot_complete_ul;
250249
}
251250

252251
FD_FN_CONST static inline ulong fd_disco_repair_replay_sig_slot ( ulong sig ) { return fd_ulong_extract ( sig, 32, 63 ); }
253-
FD_FN_CONST static inline uint fd_disco_repair_replay_sig_data_cnt ( ulong sig ) { return (uint)fd_ulong_extract ( sig, 17, 31 ); }
254-
FD_FN_CONST static inline ushort fd_disco_repair_replay_sig_parent_off ( ulong sig ) { return (ushort)fd_ulong_extract ( sig, 1, 16 ); }
255-
FD_FN_CONST static inline int fd_disco_repair_replay_sig_slot_complete( ulong sig ) { return fd_ulong_extract_bit( sig, 0 ); }
252+
FD_FN_CONST static inline ushort fd_disco_repair_replay_sig_parent_off ( ulong sig ) { return (ushort)fd_ulong_extract ( sig, 16, 31 ); }
253+
FD_FN_CONST static inline uint fd_disco_repair_replay_sig_data_cnt ( ulong sig ) { return (uint) fd_ulong_extract ( sig, 1, 15 ); }
254+
FD_FN_CONST static inline int fd_disco_repair_replay_sig_slot_complete( ulong sig ) { return fd_ulong_extract_bit( sig, 0 ); }
256255

257256
FD_FN_PURE static inline ulong
258257
fd_disco_compact_chunk0( void * wksp ) {

src/disco/shred/fd_shred_tile.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -506,8 +506,7 @@ during_frag( fd_shred_ctx_t * ctx,
506506
uchar const * dcache_entry = (uchar const *)fd_chunk_to_laddr_const( ctx->in[ in_idx ].mem, chunk ) + ctl;
507507
ulong hdr_sz = fd_disco_netmux_sig_hdr_sz( sig );
508508
FD_TEST( hdr_sz <= sz ); /* Should be ensured by the net tile */
509-
ulong repair_nonce_sz = fd_disco_netmux_sig_proto( sig )==DST_PROTO_REPAIR*4;
510-
fd_shred_t const * shred = fd_shred_parse( dcache_entry+hdr_sz, sz-hdr_sz-repair_nonce_sz );
509+
fd_shred_t const * shred = fd_shred_parse( dcache_entry+hdr_sz, sz-hdr_sz );
511510
if( FD_UNLIKELY( !shred ) ) {
512511
ctx->skip_frag = 1;
513512
return;
@@ -521,7 +520,7 @@ during_frag( fd_shred_ctx_t * ctx,
521520
return;
522521
}
523522
fd_memcpy( ctx->shred_buffer, dcache_entry+hdr_sz, sz-hdr_sz );
524-
ctx->shred_buffer_sz = sz-hdr_sz-repair_nonce_sz;
523+
ctx->shred_buffer_sz = sz-hdr_sz;
525524
}
526525
}
527526

src/discof/exec/fd_exec_tile.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,17 @@ during_frag( fd_exec_tile_ctx_t * ctx,
433433
return;
434434
} else if( sig==EXEC_NEW_SLOT_SIG ) {
435435
fd_runtime_public_slot_msg_t * msg = fd_chunk_to_laddr( ctx->replay_in_mem, chunk );
436-
FD_LOG_NOTICE(( "new slot=%lu msg recvd", msg->slot ));
436+
FD_LOG_DEBUG(( "new slot=%lu msg recvd", msg->slot ));
437437
prepare_new_slot_execution( ctx, msg );
438438
return;
439439
} else if( sig==EXEC_NEW_EPOCH_SIG ) {
440440
fd_runtime_public_epoch_msg_t * msg = fd_chunk_to_laddr( ctx->replay_in_mem, chunk );
441-
FD_LOG_NOTICE(( "new epoch=%lu msg recvd", msg->epoch_schedule.slots_per_epoch ));
441+
FD_LOG_DEBUG(( "new epoch=%lu msg recvd", msg->epoch_schedule.slots_per_epoch ));
442442
prepare_new_epoch_execution( ctx, msg );
443443
return;
444444
} else if( sig==EXEC_HASH_ACCS_SIG ) {
445445
fd_runtime_public_hash_bank_msg_t * msg = fd_chunk_to_laddr( ctx->replay_in_mem, chunk );
446-
FD_LOG_NOTICE(( "hash accs=%lu msg recvd", msg->end_idx - msg->start_idx ));
446+
FD_LOG_DEBUG(( "hash accs=%lu msg recvd", msg->end_idx - msg->start_idx ));
447447
hash_accounts( ctx, msg );
448448
return;
449449
} else if( sig==EXEC_BPF_SCAN_SIG ) {
@@ -452,11 +452,11 @@ during_frag( fd_exec_tile_ctx_t * ctx,
452452
bpf_scan_accounts( ctx, msg );
453453
return;
454454
} else if( sig==EXEC_SNAP_HASH_ACCS_CNT_SIG ) {
455-
FD_LOG_NOTICE(( "snap hash count msg recvd" ));
455+
FD_LOG_DEBUG(( "snap hash count msg recvd" ));
456456
snap_hash_count( ctx );
457457
} else if( sig==EXEC_SNAP_HASH_ACCS_GATHER_SIG ) {
458458
fd_runtime_public_snap_hash_msg_t * msg = fd_chunk_to_laddr( ctx->replay_in_mem, chunk );
459-
FD_LOG_NOTICE(( "snap hash gather msg recvd" ));
459+
FD_LOG_DEBUG(( "snap hash gather msg recvd" ));
460460
snap_hash_gather( ctx, msg );
461461
} else {
462462
FD_LOG_ERR(( "Unknown signature" ));

src/discof/forest/fd_forest.c

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ ancestry_frontier_query( fd_forest_t * forest, ulong slot ) {
205205
static fd_forest_ele_t *
206206
ancestry_frontier_remove( fd_forest_t * forest, ulong slot ) {
207207
fd_forest_ele_t * pool = fd_forest_pool( forest );
208-
fd_forest_ele_t * ele = NULL;
208+
fd_forest_ele_t * ele = NULL;
209209
ele = fd_forest_ancestry_ele_remove( fd_forest_ancestry( forest ), &slot, NULL, pool );
210210
ele = fd_ptr_if( !ele, fd_forest_frontier_ele_remove( fd_forest_frontier( forest ), &slot, NULL, pool ), ele );
211211
return ele;
@@ -243,7 +243,7 @@ link( fd_forest_t * forest, fd_forest_ele_t * parent, fd_forest_ele_t * child )
243243
FD_FN_UNUSED static void
244244
link_orphans( fd_forest_t * forest, fd_forest_ele_t * head ) {
245245
fd_forest_ele_t * pool = fd_forest_pool( forest );
246-
ulong null = fd_forest_pool_idx_null( pool );
246+
ulong null = fd_forest_pool_idx_null( pool );
247247
fd_forest_ancestry_t * ancestry = fd_forest_ancestry( forest );
248248
fd_forest_orphaned_t * orphaned = fd_forest_orphaned( forest );
249249
fd_forest_ele_t * tail = head;
@@ -326,18 +326,19 @@ static fd_forest_ele_t *
326326
acquire( fd_forest_t * forest, ulong slot ) {
327327
fd_forest_ele_t * pool = fd_forest_pool( forest );
328328
fd_forest_ele_t * ele = fd_forest_pool_ele_acquire( pool );
329-
ulong null = fd_forest_pool_idx_null( pool );
329+
ulong null = fd_forest_pool_idx_null( pool );
330330

331331
ele->slot = slot;
332332
ele->prev = null;
333+
ele->next = null;
333334
ele->parent = null;
334335
ele->child = null;
335336
ele->sibling = null;
336337

337-
ele->consumed_idx = UINT_MAX;
338338
ele->buffered_idx = UINT_MAX;
339339
ele->complete_idx = UINT_MAX;
340340

341+
fd_forest_ele_idxs_null( ele->cmpl ); /* FIXME expensive */
341342
fd_forest_ele_idxs_null( ele->fecs ); /* FIXME expensive */
342343
fd_forest_ele_idxs_null( ele->idxs ); /* FIXME expensive */
343344

@@ -349,8 +350,8 @@ insert( fd_forest_t * forest, ulong slot, ushort parent_off ) {
349350
fd_forest_ele_t * pool = fd_forest_pool( forest );
350351

351352
# if FD_FOREST_USE_HANDHOLDING
352-
FD_TEST( parent_off <= slot ); /* caller err - inval */
353-
FD_TEST( fd_forest_pool_free( pool ) ); /* impl err - oom */
353+
FD_TEST( parent_off <= slot ); /* caller err - inval */
354+
FD_TEST( fd_forest_pool_free( pool ) ); /* impl err - oom */
354355
FD_TEST( slot > fd_forest_root_slot( forest ) ); /* caller error - inval */
355356
# endif
356357

@@ -365,7 +366,15 @@ insert( fd_forest_t * forest, ulong slot, ushort parent_off ) {
365366
}
366367

367368
fd_forest_ele_t *
368-
fd_forest_data_shred_insert( fd_forest_t * forest, ulong slot, ushort parent_off, uint shred_idx, uint fec_set_idx, uint complete_idx ) {
369+
fd_forest_query( fd_forest_t * forest, ulong slot ) {
370+
# if FD_FOREST_USE_HANDHOLDING
371+
FD_TEST( slot > fd_forest_root_slot( forest ) ); /* caller error - inval */
372+
# endif
373+
return query( forest, slot );
374+
}
375+
376+
fd_forest_ele_t *
377+
fd_forest_data_shred_insert( fd_forest_t * forest, ulong slot, ushort parent_off, uint shred_idx, uint fec_set_idx, FD_PARAM_UNUSED int data_complete, int slot_complete ) {
369378
# if FD_FOREST_USE_HANDHOLDING
370379
FD_TEST( slot > fd_forest_root_slot( forest ) ); /* caller error - inval */
371380
# endif
@@ -396,7 +405,7 @@ fd_forest_data_shred_insert( fd_forest_t * forest, ulong slot, ushort parent_off
396405
fd_forest_ele_idxs_insert( ele->fecs, fec_set_idx );
397406
fd_forest_ele_idxs_insert( ele->idxs, shred_idx );
398407
while( fd_forest_ele_idxs_test( ele->idxs, ele->buffered_idx + 1U ) ) ele->buffered_idx++;
399-
ele->complete_idx = fd_uint_if( complete_idx != UINT_MAX, complete_idx, ele->complete_idx );
408+
ele->complete_idx = fd_uint_if( slot_complete, shred_idx, ele->complete_idx );
400409
advance_frontier( forest, slot, parent_off );
401410
return ele;
402411
}
@@ -410,7 +419,7 @@ fd_forest_publish( fd_forest_t * forest, ulong new_root_slot ) {
410419
fd_forest_ancestry_t * ancestry = fd_forest_ancestry( forest );
411420
fd_forest_frontier_t * frontier = fd_forest_frontier( forest );
412421
fd_forest_ele_t * pool = fd_forest_pool( forest );
413-
ulong null = fd_forest_pool_idx_null( pool );
422+
ulong null = fd_forest_pool_idx_null( pool );
414423

415424
fd_forest_ele_t * old_root_ele = fd_forest_pool_ele( pool, forest->root );
416425
fd_forest_ele_t * new_root_ele = ancestry_frontier_query( forest, new_root_slot );
@@ -623,8 +632,8 @@ fd_forest_frontier_print( fd_forest_t const * forest ) {
623632
!fd_forest_frontier_iter_done( iter, frontier, pool );
624633
iter = fd_forest_frontier_iter_next( iter, frontier, pool ) ) {
625634
fd_forest_ele_t const * ele = fd_forest_frontier_iter_ele_const( iter, frontier, pool );
626-
ancestry_print2( forest, fd_forest_pool_ele_const( fd_forest_pool_const( forest ), fd_forest_pool_idx( pool, ele ) ), NULL, 0, 0, "" );
627-
635+
// printf("%lu ", ele->slot);
636+
ancestry_print( forest, fd_forest_pool_ele_const( fd_forest_pool_const( forest ), fd_forest_pool_idx( pool, ele ) ), 0, "" );
628637
}
629638
}
630639

src/discof/forest/fd_forest.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ struct __attribute__((aligned(128UL))) fd_forest_ele {
5353
ulong child; /* pool idx of the left-child */
5454
ulong sibling; /* pool idx of the right-sibling */
5555

56-
uint consumed_idx; /* highest consumed shred idx */
57-
uint buffered_idx; /* highest contiguosly-received shred idx */
56+
uint buffered_idx; /* highest contiguous buffered shred idx */
5857
uint complete_idx; /* shred_idx with SLOT_COMPLETE_FLAG ie. last shred idx in the slot */
5958

59+
fd_forest_ele_idxs_t cmpl[fd_forest_ele_idxs_word_cnt]; /* fec complete idxs */
6060
fd_forest_ele_idxs_t fecs[fd_forest_ele_idxs_word_cnt]; /* fec set idxs */
6161
fd_forest_ele_idxs_t idxs[fd_forest_ele_idxs_word_cnt]; /* data shred idxs */
6262
};
@@ -106,6 +106,7 @@ typedef struct fd_forest_ele fd_forest_ele_t;
106106

107107
struct __attribute__((aligned(128UL))) fd_forest {
108108
ulong root; /* pool idx of the root */
109+
ulong iter; /* pool idx of the iterator */
109110
ulong wksp_gaddr; /* wksp gaddr of fd_forest in the backing wksp, non-zero gaddr */
110111
ulong ver_gaddr; /* wksp gaddr of version fseq, incremented on write ops */
111112
ulong pool_gaddr; /* wksp gaddr of fd_pool */
@@ -289,6 +290,9 @@ fd_forest_root_slot( fd_forest_t const * forest ) {
289290
return fd_forest_pool_ele_const( fd_forest_pool_const( forest ), forest->root )->slot;
290291
}
291292

293+
fd_forest_ele_t *
294+
fd_forest_query( fd_forest_t * forest, ulong slot );
295+
292296
/* Operations */
293297

294298
/* fd_forest_shred_insert inserts a new shred into the forest.
@@ -298,7 +302,7 @@ fd_forest_root_slot( fd_forest_t const * forest ) {
298302
Returns the inserted forest ele. */
299303

300304
fd_forest_ele_t *
301-
fd_forest_data_shred_insert( fd_forest_t * forest, ulong slot, ushort parent_off, uint shred_idx, uint fec_set_idx, uint complete_idx );
305+
fd_forest_data_shred_insert( fd_forest_t * forest, ulong slot, ushort parent_off, uint shred_idx, uint fec_set_idx, int data_complete, int slot_complete );
302306

303307
/* fd_forest_publish publishes slot as the new forest root, setting
304308
the subtree beginning from slot as the new forest tree (ie. slot

src/discof/forest/test_forest.c

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
fd_forest_t *
1919
setup_preorder( fd_forest_t * forest ) {
2020
fd_forest_init( forest, 0 );
21-
fd_forest_data_shred_insert( forest, 1, 1, 0, 0, UINT_MAX );
22-
fd_forest_data_shred_insert( forest, 2, 1, 0, 0, UINT_MAX );
23-
fd_forest_data_shred_insert( forest, 4, 2, 0, 0, UINT_MAX );
24-
fd_forest_data_shred_insert( forest, 3, 2, 0, 0, UINT_MAX );
25-
fd_forest_data_shred_insert( forest, 5, 2, 0, 0, UINT_MAX );
26-
fd_forest_data_shred_insert( forest, 6, 1, 0, 0, UINT_MAX );
21+
fd_forest_data_shred_insert( forest, 1, 1, 0, 0, 0, 0 );
22+
fd_forest_data_shred_insert( forest, 2, 1, 0, 0, 0, 0 );
23+
fd_forest_data_shred_insert( forest, 4, 2, 0, 0, 0, 0 );
24+
fd_forest_data_shred_insert( forest, 3, 2, 0, 0, 0, 0 );
25+
fd_forest_data_shred_insert( forest, 5, 2, 0, 0, 0, 0 );
26+
fd_forest_data_shred_insert( forest, 6, 1, 0, 0, 0, 0 );
2727
FD_TEST( !fd_forest_verify( forest ) );
2828
fd_forest_print( forest );
2929
return forest;
@@ -110,70 +110,70 @@ void test_out_of_order( fd_wksp_t * wksp ) {
110110
fd_forest_t * forest = fd_forest_join( fd_forest_new( mem, ele_max, 42UL /* seed */ ) );
111111

112112
fd_forest_init( forest, 0 );
113-
fd_forest_data_shred_insert( forest, 6, 1, 0, 0, UINT_MAX );
114-
fd_forest_data_shred_insert( forest, 5, 2, 0, 0, UINT_MAX );
115-
fd_forest_data_shred_insert( forest, 2, 1, 0, 0, UINT_MAX );
116-
fd_forest_data_shred_insert( forest, 1, 1, 0, 0, UINT_MAX );
117-
fd_forest_data_shred_insert( forest, 3, 2, 0, 0, UINT_MAX );
113+
fd_forest_data_shred_insert( forest, 6, 1, 0, 0, 0, 0 );
114+
fd_forest_data_shred_insert( forest, 5, 2, 0, 0, 0, 0 );
115+
fd_forest_data_shred_insert( forest, 2, 1, 0, 0, 0, 0 );
116+
fd_forest_data_shred_insert( forest, 1, 1, 0, 0, 0, 0 );
117+
fd_forest_data_shred_insert( forest, 3, 2, 0, 0, 0, 0 );
118118

119+
fd_forest_print( forest );
119120
ulong * arr = frontier_arr( wksp, forest );
120121
FD_TEST( arr[0] == 1 );
121122
FD_TEST( arr[1] == ULONG_MAX );
122123
FD_TEST( !fd_forest_verify( forest ) );
123-
fd_forest_print( forest );
124124
fd_wksp_free_laddr( arr );
125125

126-
fd_forest_data_shred_insert( forest, 1, 1, 1, 0, 1 );
126+
fd_forest_data_shred_insert( forest, 1, 1, 1, 0, 1, 1 );
127+
fd_forest_print( forest );
127128
arr = frontier_arr( wksp, forest );
128129
FD_TEST( arr[0] == 2 );
129130
FD_TEST( arr[1] == 3 );
130131
FD_TEST( arr[2] == ULONG_MAX );
131132
FD_TEST( !fd_forest_verify( forest ) );
132-
fd_forest_print( forest );
133133
fd_wksp_free_laddr( arr );
134134

135-
fd_forest_data_shred_insert( forest, 3, 2, 1, 0, 1 );
135+
fd_forest_data_shred_insert( forest, 3, 2, 1, 0, 1, 1 );
136+
fd_forest_print( forest );
136137
arr = frontier_arr( wksp, forest );
137138
FD_TEST( arr[0] == 2 );
138139
FD_TEST( arr[1] == 5 );
139140
FD_TEST( arr[2] == ULONG_MAX );
140141
FD_TEST( !fd_forest_verify( forest ) );
141-
fd_forest_print( forest );
142142
fd_wksp_free_laddr( arr );
143143

144-
fd_forest_data_shred_insert( forest, 5, 2, 1, 0, 1 );
144+
fd_forest_data_shred_insert( forest, 5, 2, 1, 0, 1, 1 );
145+
fd_forest_print( forest );
145146
arr = frontier_arr( wksp, forest );
146147
FD_TEST( arr[0] == 2 );
147148
FD_TEST( arr[1] == 6 );
148149
FD_TEST( arr[2] == ULONG_MAX );
149150
FD_TEST( !fd_forest_verify( forest ) );
150-
fd_forest_print( forest );
151151
fd_wksp_free_laddr( arr );
152152

153-
fd_forest_data_shred_insert( forest, 4, 2, 0, 0, UINT_MAX );
154-
fd_forest_data_shred_insert( forest, 2, 1, 1, 0, 1 );
153+
fd_forest_data_shred_insert( forest, 4, 2, 0, 0, 0, 0 );
154+
fd_forest_data_shred_insert( forest, 2, 1, 1, 0, 1, 1 );
155+
fd_forest_print( forest );
155156
arr = frontier_arr( wksp, forest );
156157
FD_TEST( arr[0] == 4 );
157158
FD_TEST( arr[1] == 6 );
158159
FD_TEST( arr[2] == ULONG_MAX );
159160
FD_TEST( !fd_forest_verify( forest ) );
160-
fd_forest_print( forest );
161161
fd_wksp_free_laddr( arr );
162162

163-
fd_forest_data_shred_insert( forest, 6, 1, 1, 0, 1 );
163+
fd_forest_data_shred_insert( forest, 6, 1, 1, 0, 1, 1 );
164+
fd_forest_print( forest );
164165
arr = frontier_arr( wksp, forest );
165166
FD_TEST( arr[0] == 4 );
166167
FD_TEST( arr[1] == ULONG_MAX );
167168
FD_TEST( !fd_forest_verify( forest ) );
168-
fd_forest_print( forest );
169169
fd_wksp_free_laddr( arr );
170170

171-
fd_forest_data_shred_insert( forest, 4, 2, 1, 0, UINT_MAX ); /* shred complete arrives before */
172-
fd_forest_data_shred_insert( forest, 4, 2, 2, 0, 2 );
171+
fd_forest_data_shred_insert( forest, 4, 2, 1, 0, 0, 0 ); /* shred complete arrives before */
172+
fd_forest_data_shred_insert( forest, 4, 2, 2, 0, 1, 1 );
173+
fd_forest_print( forest );
173174
arr = frontier_arr( wksp, forest );
174175
FD_TEST( arr[0] == ULONG_MAX );
175176
FD_TEST( !fd_forest_verify( forest ) );
176-
fd_forest_print( forest );
177177
fd_wksp_free_laddr( arr );
178178

179179
// for( ulong i = 0; i < 7; i++ ) {
@@ -192,19 +192,19 @@ test_print_tree( fd_wksp_t *wksp ){
192192
fd_forest_t * forest = fd_forest_join( fd_forest_new( mem, ele_max, 42UL /* seed */ ) );
193193

194194
fd_forest_init( forest, 1568376 );
195-
fd_forest_data_shred_insert( forest, 1568377, 1, 0, 0, 1);
196-
fd_forest_data_shred_insert( forest, 1568378, 1, 0, 0, 1 );
197-
fd_forest_data_shred_insert( forest, 1568379, 1, 0, 0, 1 );
198-
fd_forest_data_shred_insert( forest, 1568380, 1, 0, 0, 1 );
199-
fd_forest_data_shred_insert( forest, 1568381, 2, 0, 0, 1 );
200-
fd_forest_data_shred_insert( forest, 1568382, 1, 0, 0, 1 );
201-
fd_forest_data_shred_insert( forest, 1568383, 4, 0, 0, 1 );
202-
fd_forest_data_shred_insert( forest, 1568384, 5, 0, 0, 1 );
203-
fd_forest_data_shred_insert( forest, 1568385, 5, 0, 0, 1 );
204-
fd_forest_data_shred_insert( forest, 1568386, 6, 0, 0, 1 );
195+
fd_forest_data_shred_insert( forest, 1568377, 1, 0, 0, 1, 1 );
196+
fd_forest_data_shred_insert( forest, 1568378, 1, 0, 0, 1, 1 );
197+
fd_forest_data_shred_insert( forest, 1568379, 1, 0, 0, 1, 1 );
198+
fd_forest_data_shred_insert( forest, 1568380, 1, 0, 0, 1, 1 );
199+
fd_forest_data_shred_insert( forest, 1568381, 2, 0, 0, 1, 1 );
200+
fd_forest_data_shred_insert( forest, 1568382, 1, 0, 0, 1, 1 );
201+
fd_forest_data_shred_insert( forest, 1568383, 4, 0, 0, 1, 1 );
202+
fd_forest_data_shred_insert( forest, 1568384, 5, 0, 0, 1, 1 );
203+
fd_forest_data_shred_insert( forest, 1568385, 5, 0, 0, 1, 1 );
204+
fd_forest_data_shred_insert( forest, 1568386, 6, 0, 0, 1, 1 );
205205

206206
for( ulong i = 1568387; i < 1568400; i++ ){
207-
FD_TEST( fd_forest_data_shred_insert( forest, i, 1, 0, 0, 1 ) );
207+
FD_TEST( fd_forest_data_shred_insert( forest, i, 1, 0, 0, 1, 1) );
208208
//fd_forest_shred_complete( forest, i, 0 );
209209
}
210210

0 commit comments

Comments
 (0)