Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions crates/cli/src/runbook/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ pub async fn execute_on_disk_runbook(
.await
}

#[allow(clippy::too_many_arguments)]
pub async fn execute_runbook(
progress_tx: Sender<BlockEvent>,
simnet_events_tx: crossbeam::channel::Sender<SimnetEvent>,
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/src/scaffold/anchor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use crate::{

pub fn try_get_programs_from_project(
base_location: FileLocation,
test_suite_paths: &Vec<String>,
test_suite_paths: &[String],
) -> Result<Option<ProgramFrameworkData>, String> {
let mut manifest_location = base_location.clone();
manifest_location.append_path("Anchor.toml")?;
Expand Down
10 changes: 5 additions & 5 deletions crates/cli/src/scaffold/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ impl ProgramFrameworkData {

pub async fn detect_program_frameworks(
manifest_path: &str,
test_paths: &Vec<String>,
test_paths: &[String],
) -> Result<Option<ProgramFrameworkData>, String> {
let manifest_location = FileLocation::from_path_string(manifest_path)?;
let base_dir = manifest_location.get_parent_location()?;
Expand Down Expand Up @@ -130,7 +130,7 @@ impl ProgramMetadata {

pub fn scaffold_in_memory_iac(
framework: &Framework,
programs: &Vec<ProgramMetadata>,
programs: &[ProgramMetadata],
genesis_accounts: &Option<Vec<GenesisEntry>>,
accounts: &Option<Vec<AccountEntry>>,
accounts_dir: &Option<Vec<AccountDirEntry>>,
Expand Down Expand Up @@ -196,7 +196,7 @@ pub fn scaffold_in_memory_iac(

pub fn scaffold_iac_layout(
framework: &Framework,
programs: &Vec<ProgramMetadata>,
programs: &[ProgramMetadata],
base_location: &FileLocation,
auto_generate_runbooks: bool,
) -> Result<(), String> {
Expand All @@ -215,7 +215,7 @@ pub fn scaffold_iac_layout(
};

let selected_programs = match auto_generate_runbooks {
true => programs.clone(),
true => programs,
false => {
let selection = MultiSelect::with_theme(&theme)
.with_prompt("Select the programs to deploy (all by default):")
Expand All @@ -228,7 +228,7 @@ pub fn scaffold_iac_layout(
.interact()
.map_err(|e| format!("unable to select programs to deploy: {e}"))?;

selection
&selection
.iter()
.map(|i| programs[*i].clone())
.collect::<Vec<_>>()
Expand Down
18 changes: 10 additions & 8 deletions crates/core/src/runloops/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use std::{
};

use agave_geyser_plugin_interface::geyser_plugin_interface::{
GeyserPlugin, ReplicaTransactionInfoV2, ReplicaTransactionInfoVersions,
GeyserPlugin, ReplicaTransactionInfoV3, ReplicaTransactionInfoVersions,
};
use chrono::{Local, Utc};
use crossbeam::select;
Expand All @@ -24,6 +24,7 @@ use jsonrpc_http_server::{DomainsValidation, ServerBuilder};
use jsonrpc_pubsub::{PubSubHandler, Session};
use jsonrpc_ws_server::{RequestContext, ServerBuilder as WsServerBuilder};
use libloading::{Library, Symbol};
use serde::Serialize;
use solana_commitment_config::CommitmentConfig;
#[cfg(feature = "geyser_plugin")]
use solana_geyser_plugin_manager::geyser_plugin_manager::{
Expand Down Expand Up @@ -529,37 +530,38 @@ fn start_geyser_runloop(
Err(e) => {
break format!("Failed to read new transaction to send to Geyser plugin: {e}");
},
Ok(GeyserEvent::NotifyTransaction(transaction_with_status_meta, sanitized_transaction)) => {
Ok(GeyserEvent::NotifyTransaction(transaction_with_status_meta, versioned_transaction)) => {

if !indexing_enabled {
continue;
}

let transaction = match sanitized_transaction {
let transaction = match versioned_transaction {
Some(tx) => tx,
None => {
let _ = simnet_events_tx.send(SimnetEvent::warn("Unable to index sanitized transaction".to_string()));
continue;
}
};

let transaction_replica = ReplicaTransactionInfoV2 {
signature: transaction.signature(),
let transaction_replica = ReplicaTransactionInfoV3 {
signature: &transaction.signatures[0],
is_vote: false,
transaction: &transaction,
transaction_status_meta: &transaction_with_status_meta.meta,
index: 0
index: 0,
message_hash: &transaction.message.hash(),
};

for plugin in surfpool_plugin_manager.iter() {
if let Err(e) = plugin.notify_transaction(ReplicaTransactionInfoVersions::V0_0_2(&transaction_replica), transaction_with_status_meta.slot) {
if let Err(e) = plugin.notify_transaction(ReplicaTransactionInfoVersions::V0_0_3(&transaction_replica), transaction_with_status_meta.slot) {
let _ = simnet_events_tx.send(SimnetEvent::error(format!("Failed to notify Geyser plugin of new transaction: {:?}", e)));
};
}

#[cfg(feature = "geyser_plugin")]
for plugin in plugin_manager.plugins.iter() {
if let Err(e) = plugin.notify_transaction(ReplicaTransactionInfoVersions::V0_0_2(&transaction_replica), transaction_with_status_meta.slot) {
if let Err(e) = plugin.notify_transaction(ReplicaTransactionInfoVersions::V0_0_3(&transaction_replica), transaction_with_status_meta.slot) {
let _ = simnet_events_tx.send(SimnetEvent::error(format!("Failed to notify Geyser plugin of new transaction: {:?}", e)));
};
}
Expand Down
31 changes: 17 additions & 14 deletions crates/core/src/surfnet/locker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1362,21 +1362,24 @@ impl SurfnetSvmLocker {
.map(|p| svm_writer.inner.get_account(p))
.collect::<Vec<Option<Account>>>();

let sanitized_transaction = if do_propagate {
SanitizedTransaction::try_create(
transaction.clone(),
transaction.message.hash(),
Some(false),
if let Some(loaded_addresses) = &loaded_addresses {
SimpleAddressLoader::Enabled(loaded_addresses.clone())
} else {
SimpleAddressLoader::Disabled
},
&HashSet::new(), // todo: provide reserved account keys
let (sanitized_transaction, versioned_transaction) = if do_propagate {
(
SanitizedTransaction::try_create(
transaction.clone(),
transaction.message.hash(),
Some(false),
if let Some(loaded_addresses) = &loaded_addresses {
SimpleAddressLoader::Enabled(loaded_addresses.clone())
} else {
SimpleAddressLoader::Disabled
},
&HashSet::new(), // todo: provide reserved account keys
)
.ok(),
Some(transaction.clone()),
)
.ok()
} else {
None
(None, None)
};

let mut mutated_account_pubkeys = HashSet::new();
Expand Down Expand Up @@ -1472,7 +1475,7 @@ impl SurfnetSvmLocker {
.geyser_events_tx
.send(GeyserEvent::NotifyTransaction(
transaction_with_status_meta,
sanitized_transaction,
versioned_transaction,
));

svm_writer.transactions_queued_for_confirmation.push_back((
Expand Down
4 changes: 2 additions & 2 deletions crates/core/src/surfnet/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use solana_commitment_config::CommitmentLevel;
use solana_epoch_info::EpochInfo;
use solana_pubkey::Pubkey;
use solana_signature::Signature;
use solana_transaction::sanitized::SanitizedTransaction;
use solana_transaction::versioned::VersionedTransaction;
use solana_transaction_error::TransactionError;
use solana_transaction_status::{EncodedConfirmedTransactionWithStatusMeta, TransactionStatus};
use svm::SurfnetSvm;
Expand All @@ -32,7 +32,7 @@ pub type AccountFactory = Box<dyn Fn(SurfnetSvmLocker) -> GetAccountResult + Sen

#[allow(clippy::large_enum_variant)]
pub enum GeyserEvent {
NotifyTransaction(TransactionWithStatusMeta, Option<SanitizedTransaction>),
NotifyTransaction(TransactionWithStatusMeta, Option<VersionedTransaction>),
UpdateAccount(GeyserAccountUpdate),
// todo: add more events
}
Expand Down