From 16ea14140259a75e3d66d900cd4a64216156790c Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Fri, 1 Sep 2023 21:02:14 +0700 Subject: [PATCH] sdk: put AccountSharedData::set_data() behind feature="dev-context-only-utils" (#33086) set_data() is deprecated in favor of set_data_from_slice(). --- Cargo.lock | 2 ++ accounts-db/src/append_vec/test_utils.rs | 2 +- core/Cargo.toml | 1 + genesis/src/main.rs | 4 ++-- ledger-tool/src/program.rs | 4 ++-- programs/address-lookup-table-tests/tests/common.rs | 2 +- programs/sbf/Cargo.lock | 1 + programs/vote/src/vote_state/mod.rs | 2 +- sdk/Cargo.toml | 2 ++ sdk/src/account.rs | 5 ++++- 10 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a63703655c..4a8e56a1e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6924,6 +6924,7 @@ dependencies = [ "num_enum 0.6.1", "pbkdf2 0.11.0", "qstring", + "qualifier_attr", "rand 0.7.3", "rand 0.8.5", "rustc_version 0.4.0", @@ -6939,6 +6940,7 @@ dependencies = [ "solana-frozen-abi-macro", "solana-logger", "solana-program", + "solana-sdk", "solana-sdk-macro", "static_assertions", "thiserror", diff --git a/accounts-db/src/append_vec/test_utils.rs b/accounts-db/src/append_vec/test_utils.rs index 823484a56f..9c97b6f060 100644 --- a/accounts-db/src/append_vec/test_utils.rs +++ b/accounts-db/src/append_vec/test_utils.rs @@ -38,7 +38,7 @@ pub fn get_append_vec_path(path: &str) -> TempFile { pub fn create_test_account(sample: usize) -> (StoredMeta, AccountSharedData) { let data_len = sample % 256; let mut account = AccountSharedData::new(sample as u64, 0, &Pubkey::default()); - account.set_data((0..data_len).map(|_| data_len as u8).collect()); + account.set_data_from_slice(&vec![data_len as u8; data_len]); let stored_meta = StoredMeta { write_version_obsolete: 0, pubkey: Pubkey::default(), diff --git a/core/Cargo.toml b/core/Cargo.toml index 65df2bcaf9..a78ad1af40 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -85,6 +85,7 @@ serial_test = { workspace = true } solana-core = { path = ".", features = ["dev-context-only-utils"] } solana-logger = { workspace = true } solana-program-runtime = { workspace = true } +solana-sdk = { workspace = true, features = ["dev-context-only-utils"] } solana-stake-program = { workspace = true } static_assertions = { workspace = true } systemstat = { workspace = true } diff --git a/genesis/src/main.rs b/genesis/src/main.rs index 038c85d4df..c254975379 100644 --- a/genesis/src/main.rs +++ b/genesis/src/main.rs @@ -87,8 +87,8 @@ pub fn load_genesis_accounts(file: &str, genesis_config: &mut GenesisConfig) -> let mut account = AccountSharedData::new(account_details.balance, 0, &owner_program_id); if account_details.data != "~" { - account.set_data( - BASE64_STANDARD + account.set_data_from_slice( + &BASE64_STANDARD .decode(account_details.data.as_str()) .map_err(|err| { io::Error::new( diff --git a/ledger-tool/src/program.rs b/ledger-tool/src/program.rs index 95b5792d35..7ed1ee06f7 100644 --- a/ledger-tool/src/program.rs +++ b/ledger-tool/src/program.rs @@ -493,7 +493,7 @@ pub fn program(ledger_path: &Path, matches: &ArgMatches<'_>) { if space > 0 { let lamports = account_info.lamports.unwrap_or(account.lamports()); let mut account = AccountSharedData::new(lamports, space, &owner); - account.set_data(data); + account.set_data_from_slice(&data); account } else { account @@ -508,7 +508,7 @@ pub fn program(ledger_path: &Path, matches: &ArgMatches<'_>) { }); let lamports = account_info.lamports.unwrap_or(0); let mut account = AccountSharedData::new(lamports, space, &owner); - account.set_data(data); + account.set_data_from_slice(&data); account }; transaction_accounts.push((pubkey, account)); diff --git a/programs/address-lookup-table-tests/tests/common.rs b/programs/address-lookup-table-tests/tests/common.rs index cd74d54b61..0a4104300e 100644 --- a/programs/address-lookup-table-tests/tests/common.rs +++ b/programs/address-lookup-table-tests/tests/common.rs @@ -85,7 +85,7 @@ pub async fn add_lookup_table_account( data.len(), &solana_address_lookup_table_program::id(), ); - account.set_data(data); + account.set_data_from_slice(&data); context.set_account(&account_address, &account); account diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 9642503de1..22a0e9f5c8 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -6026,6 +6026,7 @@ dependencies = [ "num_enum 0.6.1", "pbkdf2 0.11.0", "qstring", + "qualifier_attr", "rand 0.7.3", "rand 0.8.5", "rustc_version", diff --git a/programs/vote/src/vote_state/mod.rs b/programs/vote/src/vote_state/mod.rs index fa4a9d6ead..f3a0904b13 100644 --- a/programs/vote/src/vote_state/mod.rs +++ b/programs/vote/src/vote_state/mod.rs @@ -1181,7 +1181,7 @@ mod tests { let lamports = rent.minimum_balance(version1_14_11_serialized_len); let mut vote_account = AccountSharedData::new(lamports, version1_14_11_serialized_len, &id()); - vote_account.set_data(version1_14_11_serialized); + vote_account.set_data_from_slice(&version1_14_11_serialized); // Create a fake TransactionContext with a fake InstructionContext with a single account which is the // vote account that was just created diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index 629fbe50f0..061b16cb53 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -64,6 +64,7 @@ num-traits = { workspace = true } num_enum = { workspace = true } pbkdf2 = { workspace = true } qstring = { workspace = true } +qualifier_attr = { workspace = true } rand = { workspace = true, optional = true } rand0-7 = { package = "rand", version = "0.7", optional = true } rustversion = { workspace = true } @@ -90,6 +91,7 @@ js-sys = { workspace = true } anyhow = { workspace = true } curve25519-dalek = { workspace = true } hex = { workspace = true } +solana-sdk = { path = ".", features = ["dev-context-only-utils"] } static_assertions = { workspace = true } tiny-bip39 = { workspace = true } diff --git a/sdk/src/account.rs b/sdk/src/account.rs index 4d1bbf3e75..327560f075 100644 --- a/sdk/src/account.rs +++ b/sdk/src/account.rs @@ -1,5 +1,7 @@ //! The Solana [`Account`] type. +#[cfg(feature = "dev-context-only-utils")] +use qualifier_attr::qualifiers; use { crate::{ clock::{Epoch, INITIAL_RENT_EPOCH}, @@ -598,7 +600,8 @@ impl AccountSharedData { }; } - pub fn set_data(&mut self, data: Vec) { + #[cfg_attr(feature = "dev-context-only-utils", qualifiers(pub))] + fn set_data(&mut self, data: Vec) { self.data = Arc::new(data); }