Fixing plugin bugs
This commit is contained in:
parent
f1b1e1be68
commit
9703e7e8f9
|
@ -691,6 +691,18 @@ dependencies = [
|
|||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cargo-lock"
|
||||
version = "9.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72"
|
||||
dependencies = [
|
||||
"semver",
|
||||
"serde",
|
||||
"toml 0.7.8",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.97"
|
||||
|
@ -1399,6 +1411,26 @@ version = "0.28.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
|
||||
|
||||
[[package]]
|
||||
name = "git-version"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19"
|
||||
dependencies = [
|
||||
"git-version-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "git-version-macro"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.63",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "goblin"
|
||||
version = "0.5.4"
|
||||
|
@ -2137,6 +2169,15 @@ dependencies = [
|
|||
"syn 2.0.63",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_threads"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "number_prefix"
|
||||
version = "0.4.0"
|
||||
|
@ -2337,7 +2378,7 @@ version = "0.1.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
|
||||
dependencies = [
|
||||
"toml",
|
||||
"toml 0.5.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2451,7 +2492,9 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"agave-geyser-plugin-interface",
|
||||
"anyhow",
|
||||
"cargo-lock",
|
||||
"clap",
|
||||
"git-version",
|
||||
"log",
|
||||
"quic-geyser-common",
|
||||
"quinn",
|
||||
|
@ -2460,6 +2503,7 @@ dependencies = [
|
|||
"solana-sdk",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
"vergen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2900,6 +2944,9 @@ name = "semver"
|
|||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
|
@ -2941,6 +2988,15 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_spanned"
|
||||
version = "0.6.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_urlencoded"
|
||||
version = "0.7.1"
|
||||
|
@ -3941,7 +3997,9 @@ checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
|
|||
dependencies = [
|
||||
"deranged",
|
||||
"itoa",
|
||||
"libc",
|
||||
"num-conv",
|
||||
"num_threads",
|
||||
"powerfmt",
|
||||
"serde",
|
||||
"time-core",
|
||||
|
@ -4060,11 +4118,26 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.7.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
"toml_edit 0.19.15",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_datetime"
|
||||
version = "0.6.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_edit"
|
||||
|
@ -4073,6 +4146,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
|
||||
dependencies = [
|
||||
"indexmap 2.2.6",
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
"winnow",
|
||||
]
|
||||
|
@ -4223,6 +4298,18 @@ dependencies = [
|
|||
"percent-encoding",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "vergen"
|
||||
version = "8.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"rustc_version",
|
||||
"rustversion",
|
||||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.4"
|
||||
|
|
11
Cargo.toml
11
Cargo.toml
|
@ -49,6 +49,15 @@ pem = "1.1.1"
|
|||
lz4 = "1.24.0"
|
||||
async-stream = "0.3.5"
|
||||
|
||||
cargo-lock = "9.0.0"
|
||||
git-version = "0.3.5"
|
||||
vergen = "8.2.1"
|
||||
|
||||
quic-geyser-common = {path = "common", version="0.1.0"}
|
||||
quic-geyser-client = {path = "client", version="0.1.0"}
|
||||
quic-geyser-plugin = {path = "plugin", version="0.1.0"}
|
||||
quic-geyser-plugin = {path = "plugin", version="0.1.0"}
|
||||
|
||||
[profile.release]
|
||||
debug = true
|
||||
lto = true
|
||||
codegen-units = 1
|
16
config.json
16
config.json
|
@ -1,3 +1,17 @@
|
|||
{
|
||||
"libpath": "target/debug/libquic_geyser_plugin.so"
|
||||
"libpath": "target/debug/libquic_geyser_plugin.so",
|
||||
"quic_plugin": {
|
||||
"address": "0.0.0.0:10800",
|
||||
"compression_parameters": {
|
||||
"compression_type": {
|
||||
"Lz4Fast": 8
|
||||
}
|
||||
},
|
||||
"number_of_retries": 100,
|
||||
"quic_parameters": {
|
||||
"connection_timeout": 600,
|
||||
"max_number_of_streams_per_client": 1024,
|
||||
"recieve_window_size": 1000000
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,4 +24,13 @@ quinn = { workspace = "true" }
|
|||
log = { workspace = "true" }
|
||||
thiserror = {workspace = "true"}
|
||||
|
||||
quic-geyser-common = { path = "../common" }
|
||||
quic-geyser-common = { path = "../common" }
|
||||
|
||||
[build-dependencies]
|
||||
anyhow = { workspace = true }
|
||||
cargo-lock = { workspace = true }
|
||||
git-version = { workspace = true }
|
||||
vergen = { workspace = true, features = ["build", "rustc"] }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
|
@ -0,0 +1,34 @@
|
|||
use {cargo_lock::Lockfile, std::collections::HashSet};
|
||||
|
||||
fn main() -> anyhow::Result<()> {
|
||||
let mut envs = vergen::EmitBuilder::builder();
|
||||
envs.all_build().all_rustc();
|
||||
envs.emit()?;
|
||||
|
||||
// vergen git version does not looks cool
|
||||
println!(
|
||||
"cargo:rustc-env=GIT_VERSION={}",
|
||||
git_version::git_version!()
|
||||
);
|
||||
|
||||
// Extract packages version
|
||||
let lockfile = Lockfile::load("../Cargo.lock")?;
|
||||
println!(
|
||||
"cargo:rustc-env=SOLANA_SDK_VERSION={}",
|
||||
get_pkg_version(&lockfile, "solana-sdk")
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get_pkg_version(lockfile: &Lockfile, pkg_name: &str) -> String {
|
||||
lockfile
|
||||
.packages
|
||||
.iter()
|
||||
.filter(|pkg| pkg.name.as_str() == pkg_name)
|
||||
.map(|pkg| pkg.version.to_string())
|
||||
.collect::<HashSet<_>>()
|
||||
.into_iter()
|
||||
.collect::<Vec<_>>()
|
||||
.join(",")
|
||||
}
|
|
@ -1,6 +1,9 @@
|
|||
use std::{
|
||||
net::{IpAddr, Ipv4Addr, UdpSocket},
|
||||
sync::Arc,
|
||||
sync::{
|
||||
atomic::{AtomicUsize, Ordering},
|
||||
Arc,
|
||||
},
|
||||
};
|
||||
|
||||
use agave_geyser_plugin_interface::geyser_plugin_interface::{GeyserPluginError, Result};
|
||||
|
@ -19,7 +22,10 @@ use solana_sdk::{
|
|||
account::Account, clock::Slot, commitment_config::CommitmentLevel, pubkey::Pubkey,
|
||||
signature::Keypair,
|
||||
};
|
||||
use tokio::sync::mpsc::UnboundedSender;
|
||||
use tokio::{
|
||||
runtime::{Builder, Runtime},
|
||||
sync::mpsc::UnboundedSender,
|
||||
};
|
||||
|
||||
use crate::{config::Config, plugin_error::QuicGeyserError};
|
||||
|
||||
|
@ -37,6 +43,7 @@ pub enum ChannelMessage {
|
|||
|
||||
#[derive(Debug)]
|
||||
pub struct QuicServer {
|
||||
runtime: Runtime,
|
||||
_quic_connection_manager: ConnectionManager,
|
||||
data_channel_sender: UnboundedSender<ChannelMessage>,
|
||||
}
|
||||
|
@ -61,7 +68,15 @@ impl QuicServer {
|
|||
Some(server_config),
|
||||
socket,
|
||||
Arc::new(TokioRuntime),
|
||||
)?;
|
||||
);
|
||||
let endpoint = match endpoint {
|
||||
Ok(e) => e,
|
||||
Err(e) => {
|
||||
let s = e.to_string();
|
||||
log::info!("{}", s);
|
||||
panic!("todo")
|
||||
}
|
||||
};
|
||||
let retry_count = config.quic_plugin.number_of_retries;
|
||||
|
||||
let (quic_connection_manager, _jh) = ConnectionManager::new(
|
||||
|
@ -110,6 +125,7 @@ impl QuicServer {
|
|||
Ok(QuicServer {
|
||||
_quic_connection_manager: quic_connection_manager,
|
||||
data_channel_sender,
|
||||
runtime,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use std::{
|
||||
net::{Ipv4Addr, SocketAddrV4},
|
||||
sync::{atomic::AtomicU64, Arc},
|
||||
time::Duration,
|
||||
};
|
||||
|
@ -8,6 +9,8 @@ use cli::Args;
|
|||
use futures::StreamExt;
|
||||
use quic_geyser_client::{client::Client, DEFAULT_MAX_STREAM};
|
||||
use quic_geyser_common::filters::{AccountFilter, Filter};
|
||||
use quic_geyser_plugin::config::{CompressionParameters, Config, ConfigQuicPlugin, QuicParameters};
|
||||
use serde_json::json;
|
||||
use solana_rpc_client::nonblocking::rpc_client::RpcClient;
|
||||
use solana_sdk::{commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair};
|
||||
use tokio::pin;
|
||||
|
@ -15,26 +18,43 @@ use tokio::pin;
|
|||
pub mod cli;
|
||||
|
||||
// to create a config json
|
||||
// let config = Config {
|
||||
// libpath: "temp".to_string(),
|
||||
// quic_plugin: ConfigQuicPlugin {
|
||||
// address: std::net::SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 10800)),
|
||||
// quic_parameters: QuicParameters {
|
||||
// max_number_of_streams_per_client: 1024,
|
||||
// recieve_window_size: 1_000_000,
|
||||
// connection_timeout: 600,
|
||||
// },
|
||||
// compression_parameters: CompressionParameters {
|
||||
// compression_type: quic_geyser_common::compression::CompressionType::Lz4Fast(8),
|
||||
// },
|
||||
// number_of_retries: 100,
|
||||
// },
|
||||
// };
|
||||
// let config_json = json!(config);
|
||||
//println!("{}", config_json);
|
||||
// let config = Config {
|
||||
// libpath: "temp".to_string(),
|
||||
// quic_plugin: ConfigQuicPlugin {
|
||||
// address: std::net::SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 10800)),
|
||||
// quic_parameters: QuicParameters {
|
||||
// max_number_of_streams_per_client: 1024,
|
||||
// recieve_window_size: 1_000_000,
|
||||
// connection_timeout: 600,
|
||||
// },
|
||||
// compression_parameters: CompressionParameters {
|
||||
// compression_type: quic_geyser_common::compression::CompressionType::Lz4Fast(8),
|
||||
// },
|
||||
// number_of_retries: 100,
|
||||
// },
|
||||
// };
|
||||
// let config_json = json!(config);
|
||||
//println!("{}", config_json);
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let config = Config {
|
||||
libpath: "temp".to_string(),
|
||||
quic_plugin: ConfigQuicPlugin {
|
||||
address: std::net::SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 10800)),
|
||||
quic_parameters: QuicParameters {
|
||||
max_number_of_streams_per_client: 1024,
|
||||
recieve_window_size: 1_000_000,
|
||||
connection_timeout: 600,
|
||||
},
|
||||
compression_parameters: CompressionParameters {
|
||||
compression_type: quic_geyser_common::compression::CompressionType::Lz4Fast(8),
|
||||
},
|
||||
number_of_retries: 100,
|
||||
},
|
||||
};
|
||||
let config_json = json!(config);
|
||||
println!("{}", config_json);
|
||||
|
||||
let args = Args::parse();
|
||||
let client = Client::new(args.url, &Keypair::new(), DEFAULT_MAX_STREAM)
|
||||
|
|
Loading…
Reference in New Issue