move rpc types from client to client-types crate (#9039)
* Separate client types into own crate, so ledger does not need it Removes about 50 crates of dependency from ledger * Drop Rpc name from transaction-status types
This commit is contained in:
@ -28,7 +28,7 @@ reed-solomon-erasure = { package = "solana-reed-solomon-erasure", version = "4.0
|
||||
regex = "1.3.6"
|
||||
serde = "1.0.105"
|
||||
serde_bytes = "0.11.3"
|
||||
solana-client = { path = "../client", version = "1.1.0" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.0" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.0" }
|
||||
solana-logger = { path = "../logger", version = "1.1.0" }
|
||||
solana-measure = { path = "../measure", version = "1.1.0" }
|
||||
|
@ -22,10 +22,6 @@ use rayon::{
|
||||
ThreadPool,
|
||||
};
|
||||
use rocksdb::DBRawIterator;
|
||||
use solana_client::rpc_response::{
|
||||
RpcConfirmedBlock, RpcEncodedTransaction, RpcRewards, RpcTransactionEncoding,
|
||||
RpcTransactionStatusMeta, RpcTransactionWithStatusMeta,
|
||||
};
|
||||
use solana_measure::measure::Measure;
|
||||
use solana_metrics::{datapoint_debug, datapoint_error};
|
||||
use solana_rayon_threadlimit::get_thread_count;
|
||||
@ -40,6 +36,10 @@ use solana_sdk::{
|
||||
timing::timestamp,
|
||||
transaction::Transaction,
|
||||
};
|
||||
use solana_transaction_status::{
|
||||
ConfirmedBlock, EncodedTransaction, Rewards, TransactionEncoding, TransactionStatusMeta,
|
||||
TransactionWithStatusMeta,
|
||||
};
|
||||
use solana_vote_program::{vote_instruction::VoteInstruction, vote_state::TIMESTAMP_SLOT_INTERVAL};
|
||||
use std::{
|
||||
cell::RefCell,
|
||||
@ -1430,15 +1430,15 @@ impl Blockstore {
|
||||
pub fn get_confirmed_block(
|
||||
&self,
|
||||
slot: Slot,
|
||||
encoding: Option<RpcTransactionEncoding>,
|
||||
) -> Result<RpcConfirmedBlock> {
|
||||
encoding: Option<TransactionEncoding>,
|
||||
) -> Result<ConfirmedBlock> {
|
||||
let lowest_cleanup_slot = self.lowest_cleanup_slot.read().unwrap();
|
||||
// lowest_cleanup_slot is the last slot that was not cleaned up by
|
||||
// LedgerCleanupService
|
||||
if *lowest_cleanup_slot > slot {
|
||||
return Err(BlockstoreError::SlotCleanedUp);
|
||||
}
|
||||
let encoding = encoding.unwrap_or(RpcTransactionEncoding::Json);
|
||||
let encoding = encoding.unwrap_or(TransactionEncoding::Json);
|
||||
if self.is_root(slot) {
|
||||
let slot_meta_cf = self.db.column::<cf::SlotMeta>();
|
||||
let slot_meta = match slot_meta_cf.get(slot)? {
|
||||
@ -1467,7 +1467,7 @@ impl Blockstore {
|
||||
|
||||
let rewards = self.rewards_cf.get(slot)?.unwrap_or_else(|| vec![]);
|
||||
|
||||
let block = RpcConfirmedBlock {
|
||||
let block = ConfirmedBlock {
|
||||
previous_blockhash: previous_blockhash.to_string(),
|
||||
blockhash: blockhash.to_string(),
|
||||
parent_slot: slot_meta.parent_slot,
|
||||
@ -1487,15 +1487,14 @@ impl Blockstore {
|
||||
fn map_transactions_to_statuses<'a>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
encoding: RpcTransactionEncoding,
|
||||
encoding: TransactionEncoding,
|
||||
iterator: impl Iterator<Item = Transaction> + 'a,
|
||||
) -> Vec<RpcTransactionWithStatusMeta> {
|
||||
) -> Vec<TransactionWithStatusMeta> {
|
||||
iterator
|
||||
.map(|transaction| {
|
||||
let signature = transaction.signatures[0];
|
||||
let encoded_transaction =
|
||||
RpcEncodedTransaction::encode(transaction, encoding.clone());
|
||||
RpcTransactionWithStatusMeta {
|
||||
let encoded_transaction = EncodedTransaction::encode(transaction, encoding.clone());
|
||||
TransactionWithStatusMeta {
|
||||
transaction: encoded_transaction,
|
||||
meta: self
|
||||
.transaction_status_cf
|
||||
@ -1509,23 +1508,23 @@ impl Blockstore {
|
||||
pub fn read_transaction_status(
|
||||
&self,
|
||||
index: (Slot, Signature),
|
||||
) -> Result<Option<RpcTransactionStatusMeta>> {
|
||||
) -> Result<Option<TransactionStatusMeta>> {
|
||||
self.transaction_status_cf.get(index)
|
||||
}
|
||||
|
||||
pub fn write_transaction_status(
|
||||
&self,
|
||||
index: (Slot, Signature),
|
||||
status: &RpcTransactionStatusMeta,
|
||||
status: &TransactionStatusMeta,
|
||||
) -> Result<()> {
|
||||
self.transaction_status_cf.put(index, status)
|
||||
}
|
||||
|
||||
pub fn read_rewards(&self, index: Slot) -> Result<Option<RpcRewards>> {
|
||||
pub fn read_rewards(&self, index: Slot) -> Result<Option<Rewards>> {
|
||||
self.rewards_cf.get(index)
|
||||
}
|
||||
|
||||
pub fn write_rewards(&self, index: Slot, rewards: RpcRewards) -> Result<()> {
|
||||
pub fn write_rewards(&self, index: Slot, rewards: Rewards) -> Result<()> {
|
||||
self.rewards_cf.put(index, &rewards)
|
||||
}
|
||||
|
||||
@ -4848,7 +4847,7 @@ pub mod tests {
|
||||
.put_meta_bytes(slot - 1, &serialize(&parent_meta).unwrap())
|
||||
.unwrap();
|
||||
|
||||
let expected_transactions: Vec<(Transaction, Option<RpcTransactionStatusMeta>)> = entries
|
||||
let expected_transactions: Vec<(Transaction, Option<TransactionStatusMeta>)> = entries
|
||||
.iter()
|
||||
.cloned()
|
||||
.filter(|entry| !entry.is_tick())
|
||||
@ -4865,7 +4864,7 @@ pub mod tests {
|
||||
.transaction_status_cf
|
||||
.put(
|
||||
(slot, signature),
|
||||
&RpcTransactionStatusMeta {
|
||||
&TransactionStatusMeta {
|
||||
status: Ok(()),
|
||||
fee: 42,
|
||||
pre_balances: pre_balances.clone(),
|
||||
@ -4877,7 +4876,7 @@ pub mod tests {
|
||||
.transaction_status_cf
|
||||
.put(
|
||||
(slot + 1, signature),
|
||||
&RpcTransactionStatusMeta {
|
||||
&TransactionStatusMeta {
|
||||
status: Ok(()),
|
||||
fee: 42,
|
||||
pre_balances: pre_balances.clone(),
|
||||
@ -4887,7 +4886,7 @@ pub mod tests {
|
||||
.unwrap();
|
||||
(
|
||||
transaction,
|
||||
Some(RpcTransactionStatusMeta {
|
||||
Some(TransactionStatusMeta {
|
||||
status: Ok(()),
|
||||
fee: 42,
|
||||
pre_balances,
|
||||
@ -4904,12 +4903,12 @@ pub mod tests {
|
||||
let confirmed_block = ledger.get_confirmed_block(slot, None).unwrap();
|
||||
assert_eq!(confirmed_block.transactions.len(), 100);
|
||||
|
||||
let expected_block = RpcConfirmedBlock {
|
||||
let expected_block = ConfirmedBlock {
|
||||
transactions: expected_transactions
|
||||
.iter()
|
||||
.cloned()
|
||||
.map(|(tx, meta)| RpcTransactionWithStatusMeta {
|
||||
transaction: RpcEncodedTransaction::encode(tx, RpcTransactionEncoding::Json),
|
||||
.map(|(tx, meta)| TransactionWithStatusMeta {
|
||||
transaction: EncodedTransaction::encode(tx, TransactionEncoding::Json),
|
||||
meta,
|
||||
})
|
||||
.collect(),
|
||||
@ -4925,12 +4924,12 @@ pub mod tests {
|
||||
let confirmed_block = ledger.get_confirmed_block(slot + 1, None).unwrap();
|
||||
assert_eq!(confirmed_block.transactions.len(), 100);
|
||||
|
||||
let expected_block = RpcConfirmedBlock {
|
||||
let expected_block = ConfirmedBlock {
|
||||
transactions: expected_transactions
|
||||
.iter()
|
||||
.cloned()
|
||||
.map(|(tx, meta)| RpcTransactionWithStatusMeta {
|
||||
transaction: RpcEncodedTransaction::encode(tx, RpcTransactionEncoding::Json),
|
||||
.map(|(tx, meta)| TransactionWithStatusMeta {
|
||||
transaction: EncodedTransaction::encode(tx, TransactionEncoding::Json),
|
||||
meta,
|
||||
})
|
||||
.collect(),
|
||||
@ -5150,7 +5149,7 @@ pub mod tests {
|
||||
assert!(transaction_status_cf
|
||||
.put(
|
||||
(0, Signature::default()),
|
||||
&RpcTransactionStatusMeta {
|
||||
&TransactionStatusMeta {
|
||||
status: solana_sdk::transaction::Result::<()>::Err(
|
||||
TransactionError::AccountNotFound
|
||||
),
|
||||
@ -5162,7 +5161,7 @@ pub mod tests {
|
||||
.is_ok());
|
||||
|
||||
// result found
|
||||
let RpcTransactionStatusMeta {
|
||||
let TransactionStatusMeta {
|
||||
status,
|
||||
fee,
|
||||
pre_balances,
|
||||
@ -5180,7 +5179,7 @@ pub mod tests {
|
||||
assert!(transaction_status_cf
|
||||
.put(
|
||||
(9, Signature::default()),
|
||||
&RpcTransactionStatusMeta {
|
||||
&TransactionStatusMeta {
|
||||
status: solana_sdk::transaction::Result::<()>::Ok(()),
|
||||
fee: 9u64,
|
||||
pre_balances: pre_balances_vec.clone(),
|
||||
@ -5190,7 +5189,7 @@ pub mod tests {
|
||||
.is_ok());
|
||||
|
||||
// result found
|
||||
let RpcTransactionStatusMeta {
|
||||
let TransactionStatusMeta {
|
||||
status,
|
||||
fee,
|
||||
pre_balances,
|
||||
@ -5245,7 +5244,7 @@ pub mod tests {
|
||||
transaction_status_cf
|
||||
.put(
|
||||
(slot, transaction.signatures[0]),
|
||||
&RpcTransactionStatusMeta {
|
||||
&TransactionStatusMeta {
|
||||
status: solana_sdk::transaction::Result::<()>::Err(
|
||||
TransactionError::AccountNotFound,
|
||||
),
|
||||
@ -5268,7 +5267,7 @@ pub mod tests {
|
||||
|
||||
let map = blockstore.map_transactions_to_statuses(
|
||||
slot,
|
||||
RpcTransactionEncoding::Json,
|
||||
TransactionEncoding::Json,
|
||||
transactions.into_iter(),
|
||||
);
|
||||
assert_eq!(map.len(), 5);
|
||||
|
@ -10,8 +10,8 @@ use rocksdb::{
|
||||
};
|
||||
use serde::de::DeserializeOwned;
|
||||
use serde::Serialize;
|
||||
use solana_client::rpc_response::{RpcRewards, RpcTransactionStatusMeta};
|
||||
use solana_sdk::{clock::Slot, signature::Signature};
|
||||
use solana_transaction_status::{Rewards, TransactionStatusMeta};
|
||||
use std::{collections::HashMap, fs, marker::PhantomData, path::Path, sync::Arc};
|
||||
use thiserror::Error;
|
||||
|
||||
@ -269,7 +269,7 @@ pub trait TypedColumn: Column {
|
||||
}
|
||||
|
||||
impl TypedColumn for columns::TransactionStatus {
|
||||
type Type = RpcTransactionStatusMeta;
|
||||
type Type = TransactionStatusMeta;
|
||||
}
|
||||
|
||||
pub trait SlotColumn<Index = u64> {}
|
||||
@ -330,7 +330,7 @@ impl ColumnName for columns::Rewards {
|
||||
const NAME: &'static str = REWARDS_CF;
|
||||
}
|
||||
impl TypedColumn for columns::Rewards {
|
||||
type Type = RpcRewards;
|
||||
type Type = Rewards;
|
||||
}
|
||||
|
||||
impl Column for columns::ShredCode {
|
||||
|
Reference in New Issue
Block a user