Skip to content

Commit fdb547d

Browse files
committed
Don't use statics in DB
1 parent 7e6764f commit fdb547d

File tree

13 files changed

+286
-361
lines changed

13 files changed

+286
-361
lines changed

Cargo.lock

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ resolver = "3"
33
members = [
44
# Binaries
55
"binaries/cuprated",
6+
"binaries/p2p_connect",
67

78
# Consensus
89
"consensus",
@@ -62,6 +63,7 @@ members = [
6263
default-members = [
6364
# Binaries
6465
"binaries/cuprated",
66+
"binaries/p2p_connect",
6567

6668
# Consensus
6769
"consensus",

storage/blockchain/src/database.rs

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -32,50 +32,27 @@ pub const TX_INFOS: &str = "tx_infos";
3232
/// The name of the block infos tape.
3333
pub const BLOCK_INFOS: &str = "block_infos";
3434

35-
pub static BLOCK_HEIGHTS: OnceLock<heed::Database<Hash32Bytes, HeedUsize>> = OnceLock::new();
3635

37-
pub static KEY_IMAGES: OnceLock<heed::Database<ZeroKey, Hash32Bytes, IntegerComparator>> =
38-
OnceLock::new();
3936

40-
pub static PRE_RCT_OUTPUTS: OnceLock<
41-
heed::Database<
37+
pub struct Blockchain {
38+
pub(crate) dynamic_tables: heed::Env,
39+
pub(crate) linear_tapes: Tapes<MmapFile>,
40+
pub(crate) block_heights: heed::Database<Hash32Bytes, HeedUsize>,
41+
pub(crate) key_images: heed::Database<ZeroKey, Hash32Bytes, IntegerComparator>,
42+
pub(crate) pre_rct_outputs: heed::Database<
4243
U64<heed::byteorder::NativeEndian>,
4344
Output,
4445
IntegerComparator,
4546
IntegerComparator,
4647
>,
47-
> = OnceLock::new();
48-
49-
pub static TX_IDS: OnceLock<heed::Database<Hash32Bytes, HeedUsize>> = OnceLock::new();
50-
51-
pub static TX_OUTPUTS: OnceLock<heed::Database<HeedUsize, HeedAmountIndices, IntegerComparator>> =
52-
OnceLock::new();
53-
54-
pub static ALT_CHAIN_INFOS: OnceLock<
55-
heed::Database<StorableHeed<RawChainId>, StorableHeed<AltChainInfo>>,
56-
> = OnceLock::new();
57-
58-
pub static ALT_BLOCK_HEIGHTS: OnceLock<heed::Database<Hash32Bytes, StorableHeed<AltBlockHeight>>> =
59-
OnceLock::new();
60-
61-
pub static ALT_BLOCKS_INFO: OnceLock<
62-
heed::Database<StorableHeed<AltBlockHeight>, StorableHeed<CompactAltBlockInfo>>,
63-
> = OnceLock::new();
64-
65-
pub static ALT_BLOCK_BLOBS: OnceLock<
66-
heed::Database<StorableHeed<AltBlockHeight>, heed::types::Bytes>,
67-
> = OnceLock::new();
68-
69-
pub static ALT_TRANSACTION_BLOBS: OnceLock<heed::Database<Hash32Bytes, heed::types::Bytes>> =
70-
OnceLock::new();
71-
72-
pub static ALT_TRANSACTION_INFOS: OnceLock<
73-
heed::Database<Hash32Bytes, StorableHeed<AltTransactionInfo>>,
74-
> = OnceLock::new();
75-
76-
pub struct Blockchain {
77-
pub(crate) dynamic_tables: heed::Env,
78-
pub(crate) linear_tapes: Tapes<MmapFile>,
48+
pub(crate) tx_ids: heed::Database<Hash32Bytes, HeedUsize>,
49+
pub(crate) tx_outputs: heed::Database<HeedUsize, HeedAmountIndices, IntegerComparator>,
50+
pub(crate) alt_chain_infos: heed::Database<StorableHeed<RawChainId>, StorableHeed<AltChainInfo>>,
51+
pub(crate) alt_block_heights: heed::Database<Hash32Bytes, StorableHeed<AltBlockHeight>>,
52+
pub(crate) alt_blocks_info: heed::Database<StorableHeed<AltBlockHeight>, StorableHeed<CompactAltBlockInfo>>,
53+
pub(crate) alt_block_blobs: heed::Database<StorableHeed<AltBlockHeight>, heed::types::Bytes>,
54+
pub(crate) alt_transaction_blobs: heed::Database<Hash32Bytes, heed::types::Bytes>,
55+
pub(crate) alt_transaction_infos: heed::Database<Hash32Bytes, StorableHeed<AltTransactionInfo>>,
7956
}
8057

8158
impl Drop for Blockchain {

storage/blockchain/src/free.rs

Lines changed: 70 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ use heed::{DatabaseFlags, DefaultComparator, EnvFlags, EnvOpenOptions, IntegerCo
44
//---------------------------------------------------------------------------------------------------- Import
55
use tapes::{MmapFileOpenOption, Tapes};
66

7-
use crate::database::{
8-
ALT_BLOCKS_INFO, ALT_BLOCK_BLOBS, ALT_BLOCK_HEIGHTS, ALT_CHAIN_INFOS, ALT_TRANSACTION_BLOBS,
9-
ALT_TRANSACTION_INFOS, BLOCK_HEIGHTS, KEY_IMAGES, PRE_RCT_OUTPUTS, TX_IDS, TX_OUTPUTS,
10-
};
7+
118
use crate::{
129
config::{linear_tapes_config, Config},
1310
Blockchain,
@@ -96,107 +93,69 @@ pub fn open(config: Config) -> Result<Blockchain, heed::Error> {
9693
// <https://docs.rs/heed/0.20.0/heed/struct.EnvOpenOptions.html#method.open>
9794
unsafe { env_open_options.open(&config.data_dir)? }
9895
};
96+
/*
97+
Hello,
9998
100-
{
99+
I wouldn't class
100+
*/
101+
let (block_heights, key_images, pre_rct_outputs, tx_ids, tx_outputs, alt_chain_infos, alt_block_heights, alt_blocks_info, alt_block_blobs, alt_transaction_blobs, alt_transaction_infos) = {
101102
let mut rw_tx = env.write_txn()?;
102103

103-
BLOCK_HEIGHTS
104-
.set(
105-
env.database_options()
106-
.name("BLOCK_HEIGHTS")
107-
.types()
108-
.create(&mut rw_tx)?,
109-
)
110-
.unwrap();
111-
KEY_IMAGES
112-
.set(
113-
env.database_options()
114-
.name("KEY_IMAGES")
115-
.types()
116-
.key_comparator()
117-
.flags(DatabaseFlags::DUP_SORT | DatabaseFlags::DUP_FIXED)
118-
.create(&mut rw_tx)?,
119-
)
120-
.unwrap();
121-
PRE_RCT_OUTPUTS
122-
.set(
123-
env.database_options()
124-
.name("PRE_RCT_OUTPUTS")
125-
.types()
126-
.key_comparator()
127-
.dup_sort_comparator()
128-
.flags(DatabaseFlags::DUP_SORT | DatabaseFlags::DUP_FIXED)
129-
.create(&mut rw_tx)?,
130-
)
131-
.unwrap();
132-
TX_IDS
133-
.set(
134-
env.database_options()
135-
.name("TX_IDS")
136-
.types()
137-
.create(&mut rw_tx)?,
138-
)
139-
.unwrap();
140-
TX_OUTPUTS
141-
.set(
142-
env.database_options()
143-
.name("TX_OUTPUTS")
144-
.types()
145-
.key_comparator()
146-
.create(&mut rw_tx)?,
147-
)
148-
.unwrap();
149-
ALT_CHAIN_INFOS
150-
.set(
151-
env.database_options()
152-
.name("ALT_CHAIN_INFOS")
153-
.types()
154-
.create(&mut rw_tx)?,
155-
)
156-
.unwrap();
157-
ALT_BLOCK_HEIGHTS
158-
.set(
159-
env.database_options()
160-
.name("ALT_BLOCK_HEIGHTS")
161-
.types()
162-
.create(&mut rw_tx)?,
163-
)
164-
.unwrap();
165-
ALT_BLOCKS_INFO
166-
.set(
167-
env.database_options()
168-
.name("ALT_BLOCKS_INFO")
169-
.types()
170-
.create(&mut rw_tx)?,
171-
)
172-
.unwrap();
173-
ALT_BLOCK_BLOBS
174-
.set(
175-
env.database_options()
176-
.name("ALT_BLOCK_BLOBS")
177-
.types()
178-
.create(&mut rw_tx)?,
179-
)
180-
.unwrap();
181-
ALT_TRANSACTION_BLOBS
182-
.set(
183-
env.database_options()
184-
.name("ALT_TRANSACTION_BLOBS")
185-
.types()
186-
.create(&mut rw_tx)?,
187-
)
188-
.unwrap();
189-
ALT_TRANSACTION_INFOS
190-
.set(
191-
env.database_options()
192-
.name("ALT_TRANSACTION_INFOS")
193-
.types()
194-
.create(&mut rw_tx)?,
195-
)
196-
.unwrap();
104+
let block_heights = env.database_options()
105+
.name("BLOCK_HEIGHTS")
106+
.types()
107+
.create(&mut rw_tx)?;
108+
let key_images = env.database_options()
109+
.name("KEY_IMAGES")
110+
.types()
111+
.key_comparator()
112+
.flags(DatabaseFlags::DUP_SORT | DatabaseFlags::DUP_FIXED)
113+
.create(&mut rw_tx)?;
114+
let pre_rct_outputs = env.database_options()
115+
.name("PRE_RCT_OUTPUTS")
116+
.types()
117+
.key_comparator()
118+
.dup_sort_comparator()
119+
.flags(DatabaseFlags::DUP_SORT | DatabaseFlags::DUP_FIXED)
120+
.create(&mut rw_tx)?;
121+
let tx_ids = env.database_options()
122+
.name("TX_IDS")
123+
.types()
124+
.create(&mut rw_tx)?;
125+
let tx_outputs = env.database_options()
126+
.name("TX_OUTPUTS")
127+
.types()
128+
.key_comparator()
129+
.create(&mut rw_tx)?;
130+
let alt_chain_infos = env.database_options()
131+
.name("ALT_CHAIN_INFOS")
132+
.types()
133+
.create(&mut rw_tx)?;
134+
let alt_block_heights = env.database_options()
135+
.name("ALT_BLOCK_HEIGHTS")
136+
.types()
137+
.create(&mut rw_tx)?;
138+
let alt_blocks_info = env.database_options()
139+
.name("ALT_BLOCKS_INFO")
140+
.types()
141+
.create(&mut rw_tx)?;
142+
let alt_block_blobs = env.database_options()
143+
.name("ALT_BLOCK_BLOBS")
144+
.types()
145+
.create(&mut rw_tx)?;
146+
let alt_transaction_blobs = env.database_options()
147+
.name("ALT_TRANSACTION_BLOBS")
148+
.types()
149+
.create(&mut rw_tx)?;
150+
let alt_transaction_infos = env.database_options()
151+
.name("ALT_TRANSACTION_INFOS")
152+
.types()
153+
.create(&mut rw_tx)?;
197154

198155
rw_tx.commit()?;
199-
}
156+
157+
(block_heights, key_images, pre_rct_outputs, tx_ids, tx_outputs, alt_chain_infos, alt_block_heights, alt_blocks_info, alt_block_blobs, alt_transaction_blobs, alt_transaction_infos)
158+
};
200159

201160
let tapes = linear_tapes_config(config.data_dir.clone(), config.blob_data_dir);
202161

@@ -214,6 +173,17 @@ pub fn open(config: Config) -> Result<Blockchain, heed::Error> {
214173
Ok(Blockchain {
215174
dynamic_tables: env,
216175
linear_tapes,
176+
block_heights,
177+
key_images,
178+
pre_rct_outputs,
179+
tx_ids,
180+
tx_outputs,
181+
alt_chain_infos,
182+
alt_block_heights,
183+
alt_blocks_info,
184+
alt_block_blobs,
185+
alt_transaction_blobs,
186+
alt_transaction_infos,
217187
})
218188
}
219189

0 commit comments

Comments
 (0)