From b4d1769688c8cffa65b9fccc5a5cfbcb97eda78a Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Wed, 25 Jan 2023 19:20:24 -0300 Subject: [PATCH] geyser: add parent slot/blockhash to block (#29855) --- core/src/replay_stage.rs | 2 ++ geyser-plugin-interface/src/geyser_plugin_interface.rs | 2 ++ geyser-plugin-manager/src/block_metadata_notifier.rs | 8 ++++++++ .../src/block_metadata_notifier_interface.rs | 2 ++ 4 files changed, 14 insertions(+) diff --git a/core/src/replay_stage.rs b/core/src/replay_stage.rs index 879ac05d4b..42a06ac133 100644 --- a/core/src/replay_stage.rs +++ b/core/src/replay_stage.rs @@ -2645,6 +2645,8 @@ impl ReplayStage { if let Some(ref block_metadata_notifier) = block_metadata_notifier { let block_metadata_notifier = block_metadata_notifier.read().unwrap(); block_metadata_notifier.notify_block_metadata( + bank.parent_slot(), + &bank.parent_hash().to_string(), bank.slot(), &bank.last_blockhash().to_string(), &bank.rewards, diff --git a/geyser-plugin-interface/src/geyser_plugin_interface.rs b/geyser-plugin-interface/src/geyser_plugin_interface.rs index ab32c159a7..01279b28f7 100644 --- a/geyser-plugin-interface/src/geyser_plugin_interface.rs +++ b/geyser-plugin-interface/src/geyser_plugin_interface.rs @@ -136,6 +136,8 @@ pub struct ReplicaBlockInfo<'a> { /// Extending ReplicaBlockInfo by sending the transaction_entries_count. #[derive(Clone, Debug)] pub struct ReplicaBlockInfoV2<'a> { + pub parent_slot: u64, + pub parent_blockhash: &'a str, pub slot: u64, pub blockhash: &'a str, pub rewards: &'a [Reward], diff --git a/geyser-plugin-manager/src/block_metadata_notifier.rs b/geyser-plugin-manager/src/block_metadata_notifier.rs index 8914336a12..743c1a52d0 100644 --- a/geyser-plugin-manager/src/block_metadata_notifier.rs +++ b/geyser-plugin-manager/src/block_metadata_notifier.rs @@ -23,6 +23,8 @@ impl BlockMetadataNotifier for BlockMetadataNotifierImpl { /// Notify the block metadata fn notify_block_metadata( &self, + parent_slot: u64, + parent_blockhash: &str, slot: u64, blockhash: &str, rewards: &RwLock>, @@ -39,6 +41,8 @@ impl BlockMetadataNotifier for BlockMetadataNotifierImpl { for plugin in plugin_manager.plugins.iter_mut() { let mut measure = Measure::start("geyser-plugin-update-slot"); let block_info = Self::build_replica_block_info( + parent_slot, + parent_blockhash, slot, blockhash, &rewards, @@ -91,6 +95,8 @@ impl BlockMetadataNotifierImpl { } fn build_replica_block_info<'a>( + parent_slot: u64, + parent_blockhash: &'a str, slot: u64, blockhash: &'a str, rewards: &'a [Reward], @@ -99,6 +105,8 @@ impl BlockMetadataNotifierImpl { executed_transaction_count: u64, ) -> ReplicaBlockInfoV2<'a> { ReplicaBlockInfoV2 { + parent_slot, + parent_blockhash, slot, blockhash, rewards, diff --git a/geyser-plugin-manager/src/block_metadata_notifier_interface.rs b/geyser-plugin-manager/src/block_metadata_notifier_interface.rs index 3e69849865..663443c6e3 100644 --- a/geyser-plugin-manager/src/block_metadata_notifier_interface.rs +++ b/geyser-plugin-manager/src/block_metadata_notifier_interface.rs @@ -9,6 +9,8 @@ pub trait BlockMetadataNotifier { /// Notify the block metadata fn notify_block_metadata( &self, + parent_slot: u64, + parent_blockhash: &str, slot: u64, blockhash: &str, rewards: &RwLock>,