Skip to content

Commit dc105d7

Browse files
committed
work
1 parent 55d491d commit dc105d7

File tree

5 files changed

+45
-56
lines changed

5 files changed

+45
-56
lines changed

src/app/rpcserver/main.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@
1414
#include "../../funk/fd_funk.h"
1515

1616
#define SHAM_LINK_CONTEXT fd_rpc_ctx_t
17-
#define SHAM_LINK_STATE fd_replay_notif_msg_t
1817
#define SHAM_LINK_NAME replay_sham_link
1918
#include "sham_link.h"
2019

2120
#define SHAM_LINK_CONTEXT fd_rpc_ctx_t
22-
#define SHAM_LINK_STATE fd_multi_epoch_leaders_t
2321
#define SHAM_LINK_NAME stake_sham_link
2422
#include "sham_link.h"
2523

@@ -55,7 +53,6 @@ init_args( int * argc, char *** argv, fd_rpcserver_args_t * args ) {
5553
}
5654
fd_wksp_mprotect( wksp, 1 );
5755

58-
args->leaders = fd_multi_epoch_leaders_join( fd_multi_epoch_leaders_new( aligned_alloc( fd_multi_epoch_leaders_align(), fd_multi_epoch_leaders_footprint() ) ) );
5956
args->port = (ushort)fd_env_strip_cmdline_ulong( argc, argv, "--port", NULL, 8899 );
6057

6158
args->params.max_connection_cnt = fd_env_strip_cmdline_ulong( argc, argv, "--max-connection-cnt", NULL, 30 );
@@ -206,10 +203,9 @@ int main( int argc, char ** argv ) {
206203
replay_sham_link_start( rep_notify );
207204
stake_sham_link_start( stake_notify );
208205
while( !stopflag ) {
209-
fd_replay_notif_msg_t msg;
210-
replay_sham_link_poll( rep_notify, ctx, &msg );
206+
replay_sham_link_poll( rep_notify, ctx );
211207

212-
stake_sham_link_poll( stake_notify, ctx, args.leaders );
208+
stake_sham_link_poll( stake_notify, ctx );
213209

214210
fd_rpc_ws_poll( ctx );
215211
}
@@ -219,21 +215,21 @@ int main( int argc, char ** argv ) {
219215
}
220216

221217
static void
222-
replay_sham_link_during_frag(fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * state, void const * msg, int sz) {
223-
fd_rpc_replay_during_frag( ctx, state, msg, sz );
218+
replay_sham_link_during_frag(fd_rpc_ctx_t * ctx, void const * msg, int sz) {
219+
fd_rpc_replay_during_frag( ctx, msg, sz );
224220
}
225221

226222
static void
227-
replay_sham_link_after_frag(fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * msg) {
228-
fd_rpc_replay_after_frag( ctx, msg );
223+
replay_sham_link_after_frag(fd_rpc_ctx_t * ctx) {
224+
fd_rpc_replay_after_frag( ctx );
229225
}
230226

231227
static void
232-
stake_sham_link_during_frag(fd_rpc_ctx_t * ctx, fd_multi_epoch_leaders_t * state, void const * msg, int sz) {
233-
fd_rpc_stake_during_frag( ctx, state, msg, sz );
228+
stake_sham_link_during_frag(fd_rpc_ctx_t * ctx, void const * msg, int sz) {
229+
fd_rpc_stake_during_frag( ctx, msg, sz );
234230
}
235231

236232
static void
237-
stake_sham_link_after_frag(fd_rpc_ctx_t * ctx, fd_multi_epoch_leaders_t * state) {
238-
fd_rpc_stake_after_frag( ctx, state );
233+
stake_sham_link_after_frag(fd_rpc_ctx_t * ctx) {
234+
fd_rpc_stake_after_frag( ctx );
239235
}

src/app/rpcserver/sham_link.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ SHAM_LINK_(start)( SHAM_LINK_(t) * self ) {
3939
}
4040

4141
static void
42-
SHAM_LINK_(during_frag)( SHAM_LINK_CONTEXT * ctx, SHAM_LINK_STATE * state, void const * msg, int sz );
42+
SHAM_LINK_(during_frag)( SHAM_LINK_CONTEXT * ctx, void const * msg, int sz );
4343

4444
static void
45-
SHAM_LINK_(after_frag)( SHAM_LINK_CONTEXT * ctx, SHAM_LINK_STATE * state );
45+
SHAM_LINK_(after_frag)( SHAM_LINK_CONTEXT * ctx );
4646

4747
static inline void
48-
SHAM_LINK_(poll)( SHAM_LINK_(t) * self, SHAM_LINK_CONTEXT * ctx, SHAM_LINK_STATE * state ) {
48+
SHAM_LINK_(poll)( SHAM_LINK_(t) * self, SHAM_LINK_CONTEXT * ctx ) {
4949
while (1) {
5050
fd_frag_meta_t const * mline = self->mcache + fd_mcache_line_idx( self->seq_expect, self->depth );
5151

@@ -64,7 +64,7 @@ SHAM_LINK_(poll)( SHAM_LINK_(t) * self, SHAM_LINK_CONTEXT * ctx, SHAM_LINK_STATE
6464

6565
ulong chunk = mline->chunk;
6666
/* TODO: sanity check chunk,sz */
67-
SHAM_LINK_(during_frag)( ctx, state, fd_chunk_to_laddr( self->wksp, chunk ), mline->sz );
67+
SHAM_LINK_(during_frag)( ctx, fd_chunk_to_laddr( self->wksp, chunk ), mline->sz );
6868

6969
seq_found = fd_frag_meta_seq_query( mline );
7070
diff = fd_seq_diff( seq_found, self->seq_expect );
@@ -74,7 +74,7 @@ SHAM_LINK_(poll)( SHAM_LINK_(t) * self, SHAM_LINK_CONTEXT * ctx, SHAM_LINK_STATE
7474
continue;
7575
}
7676

77-
SHAM_LINK_(after_frag)( ctx, state );
77+
SHAM_LINK_(after_frag)( ctx );
7878

7979
self->seq_expect++;
8080
}

src/discof/rpcserver/fd_rpc_service.c

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ struct fd_rpc_global_ctx {
9393
fd_perf_sample_t perf_sample_snapshot;
9494
long perf_sample_ts;
9595
fd_multi_epoch_leaders_t * leaders;
96+
uchar buffer[FD_SHRED_MAX_SZ > sizeof(fd_replay_notif_msg_t) ? FD_SHRED_MAX_SZ : sizeof(fd_replay_notif_msg_t)];
9697
ulong acct_age;
9798
fd_rpc_history_t * history;
9899
fd_pubkey_t const * identity_key; /* nullable */
@@ -2300,7 +2301,9 @@ fd_rpc_create_ctx(fd_rpcserver_args_t * args, fd_rpc_ctx_t ** ctx_p) {
23002301

23012302
ctx->global = gctx;
23022303
gctx->spad = args->spad;
2303-
gctx->leaders = args->leaders;
2304+
2305+
uchar * mleaders_mem = (uchar *)fd_spad_alloc( args->spad, FD_MULTI_EPOCH_LEADERS_ALIGN, FD_MULTI_EPOCH_LEADERS_FOOTPRINT );
2306+
gctx->leaders = fd_multi_epoch_leaders_join( fd_multi_epoch_leaders_new( mleaders_mem) );
23042307

23052308
if( !args->offline ) {
23062309
gctx->tpu_socket = socket(AF_INET, SOCK_DGRAM, 0);
@@ -2363,15 +2366,15 @@ fd_webserver_ws_closed(ulong conn_id, void * cb_arg) {
23632366
}
23642367

23652368
void
2366-
fd_rpc_replay_during_frag( fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * state, void const * msg, int sz ) {
2367-
(void)ctx;
2369+
fd_rpc_replay_during_frag( fd_rpc_ctx_t * ctx, void const * msg, int sz ) {
23682370
FD_TEST( sz == (int)sizeof(fd_replay_notif_msg_t) );
2369-
fd_memcpy(state, msg, sizeof(fd_replay_notif_msg_t));
2371+
fd_memcpy(ctx->global->buffer, msg, sizeof(fd_replay_notif_msg_t));
23702372
}
23712373

23722374
void
2373-
fd_rpc_replay_after_frag(fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * msg) {
2375+
fd_rpc_replay_after_frag(fd_rpc_ctx_t * ctx) {
23742376
fd_rpc_global_ctx_t * subs = ctx->global;
2377+
fd_replay_notif_msg_t * msg = (fd_replay_notif_msg_t *)subs->buffer;
23752378

23762379
if( msg->type == FD_REPLAY_SLOT_TYPE ) {
23772380
long ts = fd_log_wallclock() / (long)1e9;
@@ -2424,27 +2427,25 @@ fd_rpc_replay_after_frag(fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * msg) {
24242427
}
24252428

24262429
void
2427-
fd_rpc_stake_during_frag( fd_rpc_ctx_t * ctx, fd_multi_epoch_leaders_t * state, void const * msg, int sz ) {
2428-
(void)ctx; (void)sz;
2429-
fd_multi_epoch_leaders_stake_msg_init( state, msg );
2430+
fd_rpc_stake_during_frag( fd_rpc_ctx_t * ctx, void const * msg, int sz ) {
2431+
(void)sz;
2432+
fd_multi_epoch_leaders_stake_msg_init( ctx->global->leaders, msg );
24302433
}
24312434

24322435
void
2433-
fd_rpc_stake_after_frag(fd_rpc_ctx_t * ctx, fd_multi_epoch_leaders_t * state) {
2434-
(void)ctx;
2435-
fd_multi_epoch_leaders_stake_msg_fini( state );
2436+
fd_rpc_stake_after_frag(fd_rpc_ctx_t * ctx) {
2437+
fd_multi_epoch_leaders_stake_msg_fini( ctx->global->leaders );
24362438
}
24372439

24382440
void
2439-
fd_rpc_shred_repair_during_frag(fd_rpc_ctx_t * ctx, uchar * shred, void const * msg, int sz) {
2440-
(void)ctx;
2441-
FD_TEST( sz <= (int)FD_SHRED_MAX_SZ );
2442-
fd_memcpy(shred, msg, (ulong)sz);
2441+
fd_rpc_shred_repair_during_frag(fd_rpc_ctx_t * ctx, void const * msg, int sz) {
2442+
(void)sz;
2443+
fd_memcpy(ctx->global->buffer, msg, FD_SHRED_MAX_SZ);
24432444
}
24442445

24452446
void
2446-
fd_rpc_shred_repair_after_frag(fd_rpc_ctx_t * ctx, uchar * shred) {
2447+
fd_rpc_shred_repair_after_frag(fd_rpc_ctx_t * ctx) {
24472448
fd_rpc_global_ctx_t * subs = ctx->global;
2448-
fd_shred_t * shred_p = (fd_shred_t *)shred;
2449+
fd_shred_t * shred_p = (fd_shred_t *)subs->buffer;
24492450
fd_rpc_history_save_shred( subs->history, shred_p );
24502451
}

src/discof/rpcserver/fd_rpc_service.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ typedef struct fd_rpc_ctx fd_rpc_ctx_t;
1212
struct fd_rpcserver_args {
1313
int offline;
1414
fd_funk_t funk[1];
15-
fd_multi_epoch_leaders_t * leaders;
1615
ushort port;
1716
fd_http_server_params_t params;
1817
struct sockaddr_in tpu_addr;
@@ -35,16 +34,16 @@ int fd_rpc_ws_poll(fd_rpc_ctx_t * ctx);
3534

3635
int fd_rpc_ws_fd(fd_rpc_ctx_t * ctx);
3736

38-
void fd_rpc_replay_during_frag(fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * state, void const * msg, int sz);
37+
void fd_rpc_replay_during_frag(fd_rpc_ctx_t * ctx, void const * msg, int sz);
3938

40-
void fd_rpc_replay_after_frag(fd_rpc_ctx_t * ctx, fd_replay_notif_msg_t * msg);
39+
void fd_rpc_replay_after_frag(fd_rpc_ctx_t * ctx);
4140

42-
void fd_rpc_stake_during_frag(fd_rpc_ctx_t * ctx, fd_multi_epoch_leaders_t * state, void const * msg, int sz);
41+
void fd_rpc_stake_during_frag(fd_rpc_ctx_t * ctx, void const * msg, int sz);
4342

44-
void fd_rpc_stake_after_frag(fd_rpc_ctx_t * ctx, fd_multi_epoch_leaders_t * state);
43+
void fd_rpc_stake_after_frag(fd_rpc_ctx_t * ctx);
4544

46-
void fd_rpc_shred_repair_during_frag(fd_rpc_ctx_t * ctx, uchar * shred, void const * msg, int sz);
45+
void fd_rpc_shred_repair_during_frag(fd_rpc_ctx_t * ctx, void const * msg, int sz);
4746

48-
void fd_rpc_shred_repair_after_frag(fd_rpc_ctx_t * ctx, uchar * shred);
47+
void fd_rpc_shred_repair_after_frag(fd_rpc_ctx_t * ctx);
4948

5049
#endif /* HEADER_fd_src_discof_rpcserver_fd_rpc_service_h */

src/discof/rpcserver/fd_rpcserv_tile.c

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,8 @@ struct fd_rpcserv_tile_ctx {
3838
fd_pubkey_t identity_key;
3939
fd_keyswitch_t * keyswitch;
4040

41-
fd_replay_notif_msg_t replay_notif_in_state;
42-
uchar shred_in_state[ FD_SHRED_MAX_SZ ];
43-
4441
uchar in_kind[ MAX_IN_LINKS ];
4542
fd_rpcserv_in_ctx_t in_links[ MAX_IN_LINKS ];
46-
47-
uchar __attribute__((aligned(FD_MULTI_EPOCH_LEADERS_ALIGN))) mleaders_mem[ FD_MULTI_EPOCH_LEADERS_FOOTPRINT ];
4843
};
4944
typedef struct fd_rpcserv_tile_ctx fd_rpcserv_tile_ctx_t;
5045

@@ -107,11 +102,11 @@ during_frag( fd_rpcserv_tile_ctx_t * ctx,
107102
}
108103
uchar kind = ctx->in_kind[ in_idx ];
109104
if( FD_UNLIKELY( kind==IN_KIND_REPLAY_NOTIF ) ) {
110-
fd_rpc_replay_during_frag( ctx->ctx, &ctx->replay_notif_in_state, fd_chunk_to_laddr_const( ctx->in_links[in_idx].mem, chunk ), (int)sz );
105+
fd_rpc_replay_during_frag( ctx->ctx, fd_chunk_to_laddr_const( ctx->in_links[in_idx].mem, chunk ), (int)sz );
111106
} else if( FD_UNLIKELY( kind == IN_KIND_STAKE_OUT ) ) {
112-
fd_rpc_stake_during_frag( ctx->ctx, ctx->args.leaders, fd_chunk_to_laddr_const( ctx->in_links[in_idx].mem, chunk ), (int)sz );
107+
fd_rpc_stake_during_frag( ctx->ctx, fd_chunk_to_laddr_const( ctx->in_links[in_idx].mem, chunk ), (int)sz );
113108
} else if( FD_UNLIKELY( kind == IN_KIND_SHRED_REPAIR ) ) {
114-
fd_rpc_shred_repair_during_frag( ctx->ctx, ctx->shred_in_state, fd_chunk_to_laddr_const( ctx->in_links[in_idx].mem, chunk ), (int)sz );
109+
fd_rpc_shred_repair_during_frag( ctx->ctx, fd_chunk_to_laddr_const( ctx->in_links[in_idx].mem, chunk ), (int)sz );
115110
} else {
116111
FD_LOG_ERR(("Unknown in_idx %lu for rpc", in_idx));
117112
}
@@ -140,11 +135,11 @@ after_frag( fd_rpcserv_tile_ctx_t * ctx,
140135

141136
uchar kind = ctx->in_kind[ in_idx ];
142137
if( FD_UNLIKELY( kind==IN_KIND_REPLAY_NOTIF ) ) {
143-
fd_rpc_replay_after_frag( ctx->ctx, &ctx->replay_notif_in_state );
138+
fd_rpc_replay_after_frag( ctx->ctx );
144139
} else if( FD_UNLIKELY( kind == IN_KIND_STAKE_OUT ) ) {
145-
fd_rpc_stake_after_frag( ctx->ctx, ctx->args.leaders );
140+
fd_rpc_stake_after_frag( ctx->ctx );
146141
} else if( FD_UNLIKELY( kind == IN_KIND_SHRED_REPAIR ) ) {
147-
fd_rpc_shred_repair_after_frag( ctx->ctx, ctx->shred_in_state );
142+
fd_rpc_shred_repair_after_frag( ctx->ctx );
148143
} else {
149144
FD_LOG_ERR(("Unknown in_idx %lu for rpc", in_idx));
150145
}
@@ -176,8 +171,6 @@ privileged_init( fd_topo_t * topo,
176171
args->tpu_addr.sin_addr.s_addr = tile->rpcserv.tpu_ip_addr;
177172
args->tpu_addr.sin_port = htons( (ushort)tile->rpcserv.tpu_port );
178173

179-
args->leaders = fd_multi_epoch_leaders_join( fd_multi_epoch_leaders_new( ctx->mleaders_mem) );
180-
181174
uchar * spad_mem_cur = spad_mem;
182175
args->spad = fd_spad_join( fd_spad_new( spad_mem_cur, FD_RPC_SCRATCH_MAX ) );
183176

0 commit comments

Comments
 (0)