Skip to content

Commit 474e433

Browse files
committed
feat: allow mirroring of getPayload calls
1 parent 1b48c15 commit 474e433

4 files changed

Lines changed: 19 additions & 6 deletions

File tree

cmd/serve.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,14 @@ func CommandServe(cfg *config.Config) *cli.Command {
318318
Name: categoryAuthrpc + "-deduplicate-fcus",
319319
Usage: "deduplicate repetitive fcu messages",
320320
},
321+
322+
&cli.BoolFlag{ // --authrpc-mirror-get-payload
323+
Category: strings.ToUpper(categoryAuthrpc),
324+
Destination: &cfg.Authrpc.MirrorGetPayload,
325+
EnvVars: []string{envPrefix + strings.ToUpper(categoryAuthrpc) + "_MIRROR_GET_PAYLOAD"},
326+
Name: categoryAuthrpc + "-mirror-get-payload",
327+
Usage: "mirror getPayload calls as well",
328+
},
321329
)
322330

323331
flashblocksFlags := []cli.Flag{ // --flashblocks-xxx

config/authrpc.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ package config
33
type Authrpc struct {
44
*HttpProxy `yaml:"proxy"`
55

6-
DeduplicateFCUs bool `yaml:"deduplicate_fcus"`
6+
DeduplicateFCUs bool `yaml:"deduplicate_fcus"`
7+
MirrorGetPayload bool `yaml:"mirror_get_payload"`
78
}

proxy/authrpc.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ type Authrpc struct {
3232
}
3333

3434
type authrpcConfig struct {
35-
deduplicateFCUs bool
35+
deduplicateFCUs bool
36+
mirrorGetPayload bool
3637
}
3738

3839
func NewAuthrpc(
@@ -53,7 +54,8 @@ func NewAuthrpc(
5354
tickerSeenHeads: time.NewTicker(30 * time.Second),
5455

5556
cfg: &authrpcConfig{
56-
deduplicateFCUs: cfg.DeduplicateFCUs,
57+
deduplicateFCUs: cfg.DeduplicateFCUs,
58+
mirrorGetPayload: cfg.MirrorGetPayload,
5759
},
5860
}
5961
ap.proxy.triage = ap.triage
@@ -151,6 +153,7 @@ func (p *Authrpc) triage(ctx *fasthttp.RequestCtx) (
151153
return &triaged.Request{
152154
Proxy: true,
153155
Prioritise: true,
156+
Mirror: p.cfg.mirrorGetPayload,
154157
JrpcID: call.GetID(),
155158
JrpcMethod: call.GetMethod(),
156159
}, fasthttp.AcquireResponse()

readme.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ OPTIONS:
3232
--authrpc-max-client-connections-per-ip count maximum authrpc client tcp connections count per ip (0 means unlimited) (default: 0) [$BPROXY_AUTHRPC_MAX_CLIENT_CONNECTIONS_PER_IP]
3333
--authrpc-max-request-size megabytes maximum authrpc request payload size in megabytes (default: 15) [$BPROXY_AUTHRPC_MAX_REQUEST_SIZE]
3434
--authrpc-max-response-size megabytes maximum authrpc response payload size in megabytes (default: 160) [$BPROXY_AUTHRPC_MAX_RESPONSE_SIZE]
35+
--authrpc-mirror-get-payload mirror getPayload calls as well (default: false) [$BPROXY_AUTHRPC_MIRROR_GET_PAYLOAD]
3536
--authrpc-peer-tls-insecure-skip-verify do not verify authrpc peers' tls certificates (default: false) [$BPROXY_AUTHRPC_PEER_TLS_INSECURE_SKIP_VERIFY]
3637
--authrpc-peers urls [ --authrpc-peers urls ] list of authrpc peers urls to mirror the requests to [$BPROXY_AUTHRPC_PEERS]
3738
--authrpc-remove-backend-from-peers remove authrpc backend from peers (default: false) [$BPROXY_AUTHRPC_REMOVE_BACKEND_FROM_PEERS]
@@ -46,19 +47,19 @@ OPTIONS:
4647
--chaos-authrpc-injected-invalid-jrpc-response-probability percent probability in percent at which to randomly inject invalid jrpc into responses processed by authrpc proxy (default: 0) [$BPROXY_CHAOS_AUTHRPC_INJECTED_INVALID_JRPC_RESPONSE_PROBABILITY]
4748
--chaos-authrpc-injected-jrpc-error-probability percent probability in percent at which to randomly inject jrpc errors into responses processed by authrpc proxy (default: 0) [$BPROXY_CHAOS_AUTHRPC_INJECTED_JRPC_ERROR_PROBABILITY]
4849
--chaos-authrpc-max-injected-latency latency max latency to randomly enforce on every response processed by authrpc proxy (default: 0s) [$BPROXY_CHAOS_AUTHRPC_MAX_INJECTED_LATENCY]
49-
--chaos-authrpc-min-injected-latency latency min latency to enforce on every response processed by authrpc proxy (default: 100ms) [$BPROXY_CHAOS_AUTHRPC_MIN_INJECTED_LATENCY]
50+
--chaos-authrpc-min-injected-latency latency min latency to enforce on every response processed by authrpc proxy (default: 0s) [$BPROXY_CHAOS_AUTHRPC_MIN_INJECTED_LATENCY]
5051
--chaos-flashblocks-dropped-message-probability percent probability in percent at which to randomly drop messages processed by flashblocks proxy (default: 0) [$BPROXY_CHAOS_FLASHBLOCKS_DROPPED_MESSAGE_PROBABILITY]
5152
--chaos-flashblocks-enabled whether flashblocks proxy should be injecting artificial error conditions (default: false) [$BPROXY_CHAOS_FLASHBLOCKS_ENABLED]
5253
--chaos-flashblocks-injected-invalid-flashblock-payload-probability percent probability in percent at which to randomly inject an invalid flashblock (default: 0) [$BPROXY_CHAOS_FLASHBLOCKS_INJECTED_INVALID_FLASHBLOCK_PAYLOAD_PROBABILITY]
5354
--chaos-flashblocks-injected-malformed-json-message-probability percent probability in percent at which to randomly inject a malformed json message (default: 0) [$BPROXY_CHAOS_FLASHBLOCKS_INJECTED_MALFORMED_JSON_MESSAGE_PROBABILITY]
5455
--chaos-flashblocks-max-injected-latency latency max latency to randomly enforce on every response processed by flashblocks proxy (default: 0s) [$BPROXY_CHAOS_FLASHBLOCKS_MAX_INJECTED_LATENCY]
55-
--chaos-flashblocks-min-injected-latency latency min latency to enforce on every response processed by flashblocks proxy (default: 100ms) [$BPROXY_CHAOS_FLASHBLOCKS_MIN_INJECTED_LATENCY]
56+
--chaos-flashblocks-min-injected-latency latency min latency to enforce on every response processed by flashblocks proxy (default: 0s) [$BPROXY_CHAOS_FLASHBLOCKS_MIN_INJECTED_LATENCY]
5657
--chaos-rpc-enabled whether rpc proxy should be injecting artificial error conditions (default: false) [$BPROXY_CHAOS_RPC_ENABLED]
5758
--chaos-rpc-injected-http-error-probability percent probability in percent at which to randomly inject http errors into responses processed by rpc proxy (default: 0) [$BPROXY_CHAOS_RPC_INJECTED_HTTP_ERROR_PROBABILITY]
5859
--chaos-rpc-injected-invalid-jrpc-response-probability percent probability in percent at which to randomly inject invalid jrpc into responses processed by rpc proxy (default: 0) [$BPROXY_CHAOS_RPC_INJECTED_INVALID_JRPC_RESPONSE_PROBABILITY]
5960
--chaos-rpc-injected-jrpc-error-probability percent probability in percent at which to randomly inject jrpc errors into responses processed by rpc proxy (default: 0) [$BPROXY_CHAOS_RPC_INJECTED_JRPC_ERROR_PROBABILITY]
6061
--chaos-rpc-max-injected-latency latency max latency to randomly enforce on every response processed by rpc proxy (default: 0s) [$BPROXY_CHAOS_RPC_MAX_INJECTED_LATENCY]
61-
--chaos-rpc-min-injected-latency latency min latency to enforce on every response processed by rpc proxy (default: 100ms) [$BPROXY_CHAOS_RPC_MIN_INJECTED_LATENCY]
62+
--chaos-rpc-min-injected-latency latency min latency to enforce on every response processed by rpc proxy (default: 0s) [$BPROXY_CHAOS_RPC_MIN_INJECTED_LATENCY]
6263
6364
FLASHBLOCKS
6465

0 commit comments

Comments
 (0)