No longer artificially limit the size of entries

Instead, serialize the entries and split them up over multiple
blobs.
This commit is contained in:
Greg Fitzgerald 2018-05-09 07:59:53 -06:00
parent 52f1a02938
commit b3d732a1a1
1 changed files with 28 additions and 38 deletions

View File

@ -8,7 +8,6 @@
use entry::{create_entry_mut, Entry}; use entry::{create_entry_mut, Entry};
use event::Event; use event::Event;
use hash::{hash, Hash}; use hash::{hash, Hash};
use packet::BLOB_DATA_SIZE;
use std::mem; use std::mem;
use std::sync::mpsc::{Receiver, SyncSender, TryRecvError}; use std::sync::mpsc::{Receiver, SyncSender, TryRecvError};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
@ -80,13 +79,6 @@ impl Recorder {
} }
Signal::Event(event) => { Signal::Event(event) => {
self.events.push(event); self.events.push(event);
// Record an entry early if we anticipate its serialized size will
// be larger than 64kb. At the time of this writing, we assume each
// event will be well under 256 bytes.
if self.events.len() >= BLOB_DATA_SIZE / 256 {
self.record_entry()?;
}
} }
}, },
Err(TryRecvError::Empty) => return Ok(()), Err(TryRecvError::Empty) => return Ok(()),
@ -96,33 +88,31 @@ impl Recorder {
} }
} }
#[cfg(test)] //#[cfg(test)]
mod tests { //mod tests {
use super::*; // use super::*;
use bincode::serialize; // use bincode::serialize;
use signature::{KeyPair, KeyPairUtil}; // use signature::{KeyPair, KeyPairUtil};
use std::sync::mpsc::sync_channel; // use std::sync::mpsc::sync_channel;
use transaction::Transaction; // use transaction::Transaction;
//
#[test] // #[test]
fn test_sub64k_entry_size() { // fn test_events() {
let (signal_sender, signal_receiver) = sync_channel(500); // let (signal_sender, signal_receiver) = sync_channel(500);
let (entry_sender, entry_receiver) = sync_channel(10); // let (entry_sender, entry_receiver) = sync_channel(10);
let zero = Hash::default(); // let zero = Hash::default();
let mut recorder = Recorder::new(signal_receiver, entry_sender, zero); // let mut recorder = Recorder::new(signal_receiver, entry_sender, zero);
let alice_keypair = KeyPair::new(); // let alice_keypair = KeyPair::new();
let bob_pubkey = KeyPair::new().pubkey(); // let bob_pubkey = KeyPair::new().pubkey();
for _ in 0..256 { // let event0 = Event::Transaction(Transaction::new(&alice_keypair, bob_pubkey, 1, zero));
let tx = Transaction::new(&alice_keypair, bob_pubkey, 1, zero); // let event1 = Event::Transaction(Transaction::new(&alice_keypair, bob_pubkey, 2, zero));
let event = Event::Transaction(tx); // signal_sender
signal_sender.send(Signal::Event(event)).unwrap(); // .send(Signal::Events(vec![event0, event1]))
} // .unwrap();
// recorder.process_events(Instant::now(), None).unwrap();
recorder.process_events(Instant::now(), None).unwrap(); //
// drop(recorder.sender);
drop(recorder.sender); // let entries: Vec<_> = entry_receiver.iter().collect();
let entries: Vec<_> = entry_receiver.iter().collect(); // assert_eq!(entries.len(), 1);
assert_eq!(entries.len(), 1); // }
assert!(serialize(&entries[0]).unwrap().len() <= 65_536); //}
}
}