Main into production 01/02/2024 (#312)

* Production into main (#303)

* fix: panic on geyser close, multiplex bug

https://github.com/blockworks-foundation/geyser-grpc-connector/issues/3

* update Cargo.lock

* reverting cargo.lock

* Fix issues with grpc and postgres

* Solving merge issues

* Fixing cargo fmt

* Increase finish quic timeout (#280) (#281)

* integrate geyser slot subscription (#283)

* Increase finish quic timeout (#280)

* Moving geyser slot subscription from stream to channels (#282)

* Moving geyser slot subscription from stream to channels

* Closing all the slot subscription tasks incase of restart

* Making slot channel unbounded (bug)

* remove block_debug_listen

caused a panic - need more time to investigate

2024-01-17T20:31:42.913 app[683d392fd45368] ams [info] thread 'tokio-runtime-worker' panicked at cluster-endpoints/src/grpc_inspect.rs:59:21:
2024-01-17T20:31:42.913 app[683d392fd45368] ams [info] Error receiving block: Closed
2024-01-17T20:31:42.922 app[683d392fd45368] ams [info] 2024-01-17T20:31:42.912597Z ERROR lite_rpc: Services quit unexpectedly Err(cluster endpoint failure (Err(JoinError::Panic(Id(20), ...)), 1, [JoinHandle { id: Id(19) }, JoinHandle { id: Id(23) }])

* Update cargolock file

* Fixing clippy removing grpc_inspect

* merging main with production (#290)

* remove block_debug_listen (#286)

* remove block_debug_listen

caused a panic - need more time to investigate

2024-01-17T20:31:42.913 app[683d392fd45368] ams [info] thread 'tokio-runtime-worker' panicked at cluster-endpoints/src/grpc_inspect.rs:59:21:
2024-01-17T20:31:42.913 app[683d392fd45368] ams [info] Error receiving block: Closed
2024-01-17T20:31:42.922 app[683d392fd45368] ams [info] 2024-01-17T20:31:42.912597Z ERROR lite_rpc: Services quit unexpectedly Err(cluster endpoint failure (Err(JoinError::Panic(Id(20), ...)), 1, [JoinHandle { id: Id(19) }, JoinHandle { id: Id(23) }])

* clippy

* Fixing message too long and overflow panics (#288)

* Update geyser grpc connector commit (#289)

---------

Co-authored-by: Groovie | Mango <95291500+grooviegermanikus@users.noreply.github.com>

* Merging MTU changes and setting up transportation config (#293)

* remove block_debug_listen (#286)

* remove block_debug_listen

caused a panic - need more time to investigate

2024-01-17T20:31:42.913 app[683d392fd45368] ams [info] thread 'tokio-runtime-worker' panicked at cluster-endpoints/src/grpc_inspect.rs:59:21:
2024-01-17T20:31:42.913 app[683d392fd45368] ams [info] Error receiving block: Closed
2024-01-17T20:31:42.922 app[683d392fd45368] ams [info] 2024-01-17T20:31:42.912597Z ERROR lite_rpc: Services quit unexpectedly Err(cluster endpoint failure (Err(JoinError::Panic(Id(20), ...)), 1, [JoinHandle { id: Id(19) }, JoinHandle { id: Id(23) }])

* clippy

* Fixing message too long and overflow panics (#288)

* Update geyser grpc connector commit (#289)

* Updating the transport config to match with solana endpoint (#292)

* Updating the transport config to match with solana endpoint

* Setting max MTU after groovies comments

---------

Co-authored-by: Groovie | Mango <95291500+grooviegermanikus@users.noreply.github.com>

* Making block subscription processed and moving confirmed block subscr… (#291)

* Making block subscription processed and moving confirmed block subscription to meta

* Sending both processed and confirmed blocks, if block has already been confirmed

* Minor bug, subscribing to processed blocks instead of confirmed (#295)

---------

Co-authored-by: Groovie | Mango <95291500+grooviegermanikus@users.noreply.github.com>
Co-authored-by: GroovieGermanikus <groovie@mango.markets>

* Restart connection if any stream fails

* Updating to version 0.2.4

* Updating the change logs

* Fixing all the sub overflows by using saturating sub (#309)

* Fixing by cu computation adding more tests to check by CU (#311)

* Fixing by cu computation adding more tests to check by CU

* Adding more tests

---------

Co-authored-by: Groovie | Mango <95291500+grooviegermanikus@users.noreply.github.com>
Co-authored-by: GroovieGermanikus <groovie@mango.markets>
This commit is contained in:
galactus 2024-02-01 15:08:47 +01:00 committed by GitHub
parent 64e86862c1
commit 60388667f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 108 additions and 84 deletions

View File

@ -10,6 +10,16 @@ The minor version will be incremented upon a breaking change and the patch versi
### Features:
## [0.2.4] - 2024-01-29
commit : a44923c33414f16fa0f378fb99c22b46de00ef74
- prio : Adding prioritization fees library [PR](https://github.com/blockworks-foundation/lite-rpc/pull/274)
- cluster-endpoints : GRPC optimizations [PR](multiples)
- quic : Fixing MTU bug [PR](https://github.com/blockworks-foundation/lite-rpc/pull/293)
- cluster-endpoints : Adding GRPC multiplexing [PR](https://github.com/blockworks-foundation/lite-rpc/pull/255)
- stake-vote : Calculating stake votes and leader schedule in lite-rpc [PR](https://github.com/blockworks-foundation/lite-rpc/pull/244)
## [0.2.3] - 2023-09-23
commit : 3cdab51676a4b1bfb5b41739a383e30cd8a1c73c
@ -67,4 +77,6 @@ Initial release.
- services: Services library
- lite-rpc: The lite rpc binary
- cluster-endpoints : Cluster endpoints library.
- proxy : Lite-rpc QUIC proxy to act as a forwarder
- proxy : Lite-rpc QUIC proxy to act as a forwarder
- prio : Prioritization fees libarary
- stake-vote : Stake vote library

100
Cargo.lock generated
View File

@ -137,9 +137,9 @@ dependencies = [
[[package]]
name = "anstream"
version = "0.6.9"
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fde6067df7359f2d6335ec1a50c1f8f825801687d10da0cc4c6b08e3f6afd15"
checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
dependencies = [
"anstyle",
"anstyle-parse",
@ -566,7 +566,7 @@ dependencies = [
[[package]]
name = "bench"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"anyhow",
"bincode",
@ -806,9 +806,9 @@ dependencies = [
[[package]]
name = "bytemuck"
version = "1.14.0"
version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"
dependencies = [
"bytemuck_derive",
]
@ -864,9 +864,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.31"
version = "0.4.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb"
dependencies = [
"android-tzdata",
"iana-time-zone",
@ -874,7 +874,7 @@ dependencies = [
"num-traits 0.2.17",
"serde",
"wasm-bindgen",
"windows-targets 0.48.5",
"windows-targets 0.52.0",
]
[[package]]
@ -1801,7 +1801,7 @@ dependencies = [
"aho-corasick",
"bstr",
"log",
"regex-automata 0.4.3",
"regex-automata 0.4.5",
"regex-syntax 0.8.2",
]
@ -1873,7 +1873,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http",
"indexmap 2.1.0",
"indexmap 2.2.1",
"slab",
"tokio",
"tokio-util",
@ -2144,9 +2144,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.1.0"
version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b"
dependencies = [
"equivalent",
"hashbrown 0.14.3",
@ -2493,7 +2493,7 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
[[package]]
name = "lite-rpc"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"anyhow",
"async-channel",
@ -2929,9 +2929,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openssl"
version = "0.10.62"
version = "0.10.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671"
checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8"
dependencies = [
"bitflags 2.4.2",
"cfg-if",
@ -2961,9 +2961,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
version = "0.9.98"
version = "0.9.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7"
checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae"
dependencies = [
"cc",
"libc",
@ -3067,7 +3067,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
dependencies = [
"fixedbitset",
"indexmap 2.1.0",
"indexmap 2.2.1",
]
[[package]]
@ -3090,18 +3090,18 @@ dependencies = [
[[package]]
name = "pin-project"
version = "1.1.3"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.3"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
dependencies = [
"proc-macro2",
"quote",
@ -3256,9 +3256,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.76"
version = "1.0.78"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
dependencies = [
"unicode-ident",
]
@ -3576,13 +3576,13 @@ dependencies = [
[[package]]
name = "regex"
version = "1.10.2"
version = "1.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata 0.4.3",
"regex-automata 0.4.5",
"regex-syntax 0.8.2",
]
@ -3597,9 +3597,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.3"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
dependencies = [
"aho-corasick",
"memchr",
@ -3900,9 +3900,9 @@ checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0"
[[package]]
name = "serde"
version = "1.0.195"
version = "1.0.196"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
dependencies = [
"serde_derive",
]
@ -3918,9 +3918,9 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.195"
version = "1.0.196"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
dependencies = [
"proc-macro2",
"quote",
@ -3929,9 +3929,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.111"
version = "1.0.113"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79"
dependencies = [
"itoa",
"ryu",
@ -4099,9 +4099,9 @@ dependencies = [
[[package]]
name = "smallvec"
version = "1.12.0"
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e"
checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
[[package]]
name = "socket2"
@ -4182,7 +4182,7 @@ dependencies = [
"dashmap 4.0.2",
"futures",
"futures-util",
"indexmap 2.1.0",
"indexmap 2.2.1",
"indicatif",
"log",
"quinn",
@ -4228,7 +4228,7 @@ dependencies = [
"bincode",
"crossbeam-channel",
"futures-util",
"indexmap 2.1.0",
"indexmap 2.2.1",
"log",
"rand 0.8.5",
"rayon",
@ -4284,7 +4284,7 @@ dependencies = [
[[package]]
name = "solana-lite-rpc-block-priofees"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"dashmap 5.5.3",
"itertools 0.10.5",
@ -4302,7 +4302,7 @@ dependencies = [
[[package]]
name = "solana-lite-rpc-cluster-endpoints"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"anyhow",
"async-channel",
@ -4342,7 +4342,7 @@ dependencies = [
[[package]]
name = "solana-lite-rpc-core"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"anyhow",
"async-trait",
@ -4375,7 +4375,7 @@ dependencies = [
[[package]]
name = "solana-lite-rpc-history"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"anyhow",
"async-trait",
@ -4488,7 +4488,7 @@ dependencies = [
[[package]]
name = "solana-lite-rpc-services"
version = "0.2.3"
version = "0.2.4"
dependencies = [
"anyhow",
"async-channel",
@ -4920,7 +4920,7 @@ dependencies = [
"crossbeam-channel",
"futures-util",
"histogram",
"indexmap 2.1.0",
"indexmap 2.2.1",
"itertools 0.10.5",
"libc",
"log",
@ -4965,7 +4965,7 @@ dependencies = [
"async-trait",
"bincode",
"futures-util",
"indexmap 2.1.0",
"indexmap 2.2.1",
"indicatif",
"log",
"rayon",
@ -5712,7 +5712,7 @@ version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap 2.1.0",
"indexmap 2.2.1",
"toml_datetime",
"winnow",
]
@ -5723,7 +5723,7 @@ version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
dependencies = [
"indexmap 2.1.0",
"indexmap 2.2.1",
"toml_datetime",
"winnow",
]
@ -6356,9 +6356,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
[[package]]
name = "winnow"
version = "0.5.34"
version = "0.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16"
checksum = "1931d78a9c73861da0134f453bb1f790ce49b2e30eba8410b4b79bac72b46a2d"
dependencies = [
"memchr",
]

View File

@ -14,7 +14,7 @@ members = [
]
[workspace.package]
version = "0.2.3"
version = "0.2.4"
authors = ["gmgalactus <gmgalactus@mango.markets>", "Aniket Prajapati <contact@aniketprajapati.me>"]
repository = "https://github.com/blockworks-foundation/lite-rpc"
license = "AGPL"
@ -65,12 +65,12 @@ quinn = "0.10.2"
quinn-proto = "0.10.5"
rustls = { version = "0.21.7", default-features = false, features = ["quic"] }
solana-lite-rpc-services = {path = "services", version="0.2.3"}
solana-lite-rpc-core = {path = "core", version="0.2.3"}
solana-lite-rpc-cluster-endpoints = {path = "cluster-endpoints", version="0.2.3"}
solana-lite-rpc-history = {path = "history", version="0.2.3"}
solana-lite-rpc-stakevote = {path = "stake_vote", version="0.2.3"}
solana-lite-rpc-block-priofees = {path = "block_priofees", version="0.2.3"}
solana-lite-rpc-services = {path = "services", version="0.2.4"}
solana-lite-rpc-core = {path = "core", version="0.2.4"}
solana-lite-rpc-cluster-endpoints = {path = "cluster-endpoints", version="0.2.4"}
solana-lite-rpc-history = {path = "history", version="0.2.4"}
solana-lite-rpc-stakevote = {path = "stake_vote", version="0.2.4"}
solana-lite-rpc-block-priofees = {path = "block_priofees", version="0.2.4"}
async-trait = "0.1.68"
yellowstone-grpc-client = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.12.0+solana.1.17.15" }

View File

@ -1,6 +1,6 @@
[package]
name = "bench"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
[dependencies]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-lite-rpc-block-priofees"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "Expose priority fees stats per block via RPC and WebSocket"

View File

@ -26,7 +26,7 @@ pub fn calculate_supp_percentiles(
.map(|p| {
let prio_fee = {
let index = prio_fees_in_block.len() * p / 100;
let cap_index = index.min(prio_fees_in_block.len() - 1);
let cap_index = index.min(prio_fees_in_block.len().saturating_sub(1));
prio_fees_in_block[cap_index].0
};
FeePoint {
@ -45,7 +45,7 @@ pub fn calculate_supp_percentiles(
let dist_fee_by_cu = (0..=100)
.step_by(p_step)
.map(|p| {
if agg < (cu_sum * p) / 100 {
while agg < (cu_sum * p) / 100 {
index += 1;
agg += prio_fees_in_block[index].1;
}
@ -157,6 +157,8 @@ mod tests {
let supp_info = calculate_supp_percentiles(&prio_fees_in_block);
assert_eq!(supp_info.by_tx[5], 43);
assert_eq!(supp_info.by_tx_percentiles[5], 0.25);
assert_eq!(supp_info.by_cu_percentiles[20], 1.0);
assert_eq!(supp_info.by_cu[20], 72);
}
#[test]
@ -179,6 +181,10 @@ mod tests {
assert_eq!(supp_info.by_tx_percentiles[4], 0.20);
assert_eq!(supp_info.by_tx[5], 5);
assert_eq!(supp_info.by_cu_percentiles[19], 0.95);
assert_eq!(supp_info.by_cu_percentiles[20], 1.0);
assert_eq!(supp_info.by_cu[19], 10);
assert_eq!(supp_info.by_cu[20], 10);
}
#[test]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-lite-rpc-cluster-endpoints"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "Core classes and methods used by solana lite rpc"
rust-version = "1.70.0"

View File

@ -66,7 +66,7 @@ impl LeaderFetcherInterface for GrpcLeaderGetter {
);
}
let limit = to - from;
let limit = to.saturating_sub(from);
let schedule = leader_schedule_data
.get_slot_leaders(from, limit, self.epoch_data.get_epoch_schedule())

View File

@ -229,9 +229,9 @@ pub fn create_grpc_multiplex_blocks_subscription(
cleanup_without_confirmed_recv_blocks_meta += 1;
let size_before = recent_processed_blocks.len();
recent_processed_blocks.retain(|_blockhash, block| {
last_finalized_slot == 0 || block.slot > last_finalized_slot - CLEANUP_SLOTS_BEHIND_FINALIZED
last_finalized_slot == 0 || block.slot > last_finalized_slot.saturating_sub(CLEANUP_SLOTS_BEHIND_FINALIZED)
});
let cnt_cleaned = size_before - recent_processed_blocks.len();
let cnt_cleaned = size_before.saturating_sub(recent_processed_blocks.len());
if cnt_cleaned > 0 {
debug!("cleaned {} processed blocks from cache", cnt_cleaned);
}

View File

@ -47,12 +47,15 @@ impl JsonRpcLeaderGetter {
if last_slot_needed >= first_slot_to_fetch {
let leaders = self
.rpc_client
.get_slot_leaders(first_slot_to_fetch, last_slot_needed - first_slot_to_fetch)
.get_slot_leaders(
first_slot_to_fetch,
last_slot_needed.saturating_sub(first_slot_to_fetch),
)
.await
.context("failed to get slot leaders")?;
for leader_slot in first_slot_to_fetch..last_slot_needed {
let current_leader = (leader_slot - first_slot_to_fetch) as usize;
let current_leader = (leader_slot.saturating_sub(first_slot_to_fetch)) as usize;
let pubkey = leaders[current_leader];
leader_queue.push_back(LeaderData {
leader_slot,
@ -71,7 +74,7 @@ impl LeaderFetcherInterface for JsonRpcLeaderGetter {
from: solana_sdk::slot_history::Slot,
to: solana_sdk::slot_history::Slot,
) -> anyhow::Result<Vec<LeaderData>> {
if to <= from || to - from > self.leaders_to_cache_count {
if to <= from || to.saturating_sub(from) > self.leaders_to_cache_count {
bail!("invalid arguments for get_slot_leaders");
}
let schedule = self.leader_schedule.read().await;

View File

@ -1,6 +1,6 @@
[package]
name = "solana-lite-rpc-core"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "Core classes and methods used by solana lite rpc"
rust-version = "1.70.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-lite-rpc-history"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "History implementations used by solana lite rpc"
rust-version = "1.70.0"

View File

@ -117,7 +117,10 @@ pub async fn main() {
let row_count_after = count_rows(session.client.clone()).await;
info!("total: {}", row_count_after);
info!("inserted: {}", row_count_after - row_count_before);
info!(
"inserted: {}",
row_count_after.saturating_sub(row_count_before)
);
}
async fn count_rows(client: Arc<tokio_postgres::Client>) -> i64 {

View File

@ -57,10 +57,10 @@ pub async fn main() -> anyhow::Result<()> {
// ATM we are 4000 slots behind ...
// TODO reduce 4000 to 0
let slot = 234332620; // literpc3 - local
// let slot = 231541684;
let slot: u64 = 234332620; // literpc3 - local
// let slot = 231541684;
let delta = 50 + rand::random::<u64>() % 100;
let query_slot = slot - delta;
let query_slot = slot.saturating_sub(delta);
info!("query slot (-{}): {}", delta, query_slot);
let (epoch_cache, _) = &epoch_data;

View File

@ -63,7 +63,7 @@ impl MultipleStrategyBlockStorage {
if let Some(faithful_block_storage) = &self.faithful_block_storage {
let faithful_storage_range = faithful_block_storage.get_slot_range();
trace!("Faithful storage range: {:?}", faithful_storage_range);
if lower - faithful_storage_range.end() <= 1 {
if lower.saturating_sub(*faithful_storage_range.end()) <= 1 {
// move the lower bound to the left
lower = lower.min(*faithful_storage_range.start());
}

View File

@ -362,7 +362,7 @@ fn build_assign_permissions_statements(epoch: EpochRef) -> String {
}
fn div_ceil(a: usize, b: usize) -> usize {
(a + b - 1) / b
(a.saturating_add(b).saturating_sub(1)).saturating_div(b)
}
impl PostgresBlockStore {

View File

@ -125,7 +125,7 @@ impl PostgresTransaction {
if inserted < tx_count {
warn!("Some ({}) transactions already existed and where not updated of {} total in schema {schema}",
transactions.len() - inserted, transactions.len(), schema = schema);
transactions.len().saturating_sub(inserted), transactions.len(), schema = schema);
}
trace!(

View File

@ -1,6 +1,6 @@
[package]
name = "lite-rpc"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "A lite version of solana rpc to send and confirm transactions"
rust-version = "1.70.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-lite-rpc-services"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "Services used by solana lite rpc"
rust-version = "1.70.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-lite-rpc-stakevote"
version = "0.2.3"
version = "0.2.4"
edition = "2021"
description = "History implementations used by solana lite rpc"
rust-version = "1.70.0"

View File

@ -56,7 +56,7 @@ impl RpcRequestData {
//avoid clone on the first request
if let Some(mut pending_rpc_request) = self.pending_rpc_request.take() {
if pending_rpc_request.len() > 1 {
for return_channel in pending_rpc_request.drain(0..pending_rpc_request.len() - 1) {
for return_channel in pending_rpc_request.drain(0..pending_rpc_request.len().saturating_sub(1)) {
if return_channel.send(rpc_vote_accounts.clone()).is_err() {
log::error!("Vote accounts RPC channel send closed.");
}

View File

@ -119,7 +119,7 @@ impl VoteStore {
if epoch_credits.len() > MAX_RPC_VOTE_ACCOUNT_INFO_EPOCH_CREDITS_HISTORY {
epoch_credits
.iter()
.skip(epoch_credits.len() - MAX_RPC_VOTE_ACCOUNT_INFO_EPOCH_CREDITS_HISTORY)
.skip(epoch_credits.len().saturating_sub(MAX_RPC_VOTE_ACCOUNT_INFO_EPOCH_CREDITS_HISTORY))
.cloned()
.collect()
} else {
@ -260,7 +260,7 @@ pub fn get_rpc_vote_accounts_info(
})
.partition(|vote_account_info| {
if current_slot >= delinquent_validator_slot_distance {
vote_account_info.last_vote > current_slot - delinquent_validator_slot_distance
vote_account_info.last_vote > current_slot.saturating_sub(delinquent_validator_slot_distance)
} else {
vote_account_info.last_vote > 0
}