Browse Source

Borrow CfdState when updating state in the database

The function signature didn't need to take the whole state, as it was only
borrowed internally.

Removes the need for many `.clone()` calls sprinkled in the codebase.
refactor/no-log-handler
Mariusz Klochowicz 3 years ago
parent
commit
801b05cf5b
No known key found for this signature in database GPG Key ID: 470C865699C8D4D
  1. 8
      daemon/src/db.rs
  2. 2
      daemon/src/housekeeping.rs
  3. 21
      daemon/src/maker_cfd.rs
  4. 19
      daemon/src/taker_cfd.rs

8
daemon/src/db.rs

@ -163,7 +163,7 @@ pub async fn insert_cfd(cfd: Cfd, conn: &mut PoolConnection<Sqlite>) -> anyhow::
#[allow(dead_code)] #[allow(dead_code)]
pub async fn insert_new_cfd_state_by_order_id( pub async fn insert_new_cfd_state_by_order_id(
order_id: OrderId, order_id: OrderId,
new_state: CfdState, new_state: &CfdState,
conn: &mut PoolConnection<Sqlite>, conn: &mut PoolConnection<Sqlite>,
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
let cfd_id = load_cfd_id_by_order_uuid(order_id, conn).await?; let cfd_id = load_cfd_id_by_order_uuid(order_id, conn).await?;
@ -171,7 +171,7 @@ pub async fn insert_new_cfd_state_by_order_id(
.await .await
.context("loading latest state failed")?; .context("loading latest state failed")?;
if mem::discriminant(&latest_cfd_state_in_db) == mem::discriminant(&new_state) { if mem::discriminant(&latest_cfd_state_in_db) == mem::discriminant(new_state) {
// Since we have states where we add information this happens quite frequently // Since we have states where we add information this happens quite frequently
tracing::trace!( tracing::trace!(
"Same state transition for cfd with order_id {}: {}", "Same state transition for cfd with order_id {}: {}",
@ -180,7 +180,7 @@ pub async fn insert_new_cfd_state_by_order_id(
); );
} }
let cfd_state = serde_json::to_string(&new_state)?; let cfd_state = serde_json::to_string(new_state)?;
sqlx::query!( sqlx::query!(
r#" r#"
@ -637,7 +637,7 @@ mod tests {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
}; };
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn) insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn)
.await .await
.unwrap(); .unwrap();

2
daemon/src/housekeeping.rs

@ -14,7 +14,7 @@ pub async fn transition_non_continue_cfds_to_setup_failed(
for cfd in cfds.iter().filter(|cfd| Cfd::is_cleanup(cfd)) { for cfd in cfds.iter().filter(|cfd| Cfd::is_cleanup(cfd)) {
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
cfd.order.id, cfd.order.id,
CfdState::SetupFailed { &CfdState::SetupFailed {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },

21
daemon/src/maker_cfd.rs

@ -306,7 +306,7 @@ impl Actor {
cfd.handle(CfdStateChangeEvent::ProposalSigned( cfd.handle(CfdStateChangeEvent::ProposalSigned(
TimestampedTransaction::new(tx.clone()), TimestampedTransaction::new(tx.clone()),
))?; ))?;
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
let spend_tx = dlc.finalize_spend_transaction((tx, sig_maker), sig_taker)?; let spend_tx = dlc.finalize_spend_transaction((tx, sig_maker), sig_taker)?;
@ -320,7 +320,7 @@ impl Actor {
cfd.handle(CfdStateChangeEvent::CloseSent(TimestampedTransaction::new( cfd.handle(CfdStateChangeEvent::CloseSent(TimestampedTransaction::new(
spend_tx, spend_tx,
)))?; )))?;
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state, &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
self.current_agreed_proposals self.current_agreed_proposals
.remove(&order_id) .remove(&order_id)
@ -420,7 +420,7 @@ impl Actor {
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::PendingOpen { &CfdState::PendingOpen {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -466,7 +466,7 @@ impl Actor {
let mut conn = self.db.acquire().await?; let mut conn = self.db.acquire().await?;
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::Open { &CfdState::Open {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -575,7 +575,7 @@ impl Actor {
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::ContractSetup { &CfdState::ContractSetup {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -659,7 +659,7 @@ impl Actor {
// Update order in db // Update order in db
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::Rejected { &CfdState::Rejected {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -702,7 +702,7 @@ impl Actor {
tracing::info!("Commit transaction published on chain: {}", txid); tracing::info!("Commit transaction published on chain: {}", txid);
if let Some(new_state) = cfd.handle(CfdStateChangeEvent::CommitTxSent)? { if let Some(new_state) = cfd.handle(CfdStateChangeEvent::CommitTxSent)? {
insert_new_cfd_state_by_order_id(cfd.order.id, new_state, &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &new_state, &mut conn).await?;
} }
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
@ -875,7 +875,7 @@ impl Actor {
return Ok(()); return Ok(());
} }
insert_new_cfd_state_by_order_id(order_id, cfd.state.clone(), &mut conn).await?; insert_new_cfd_state_by_order_id(order_id, &cfd.state, &mut conn).await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;
@ -925,7 +925,7 @@ impl Actor {
continue; continue;
} }
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;
@ -951,8 +951,7 @@ impl Actor {
bail!("If we can get the CET we should be able to transition") bail!("If we can get the CET we should be able to transition")
} }
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn) insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
.await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;

19
daemon/src/taker_cfd.rs

@ -273,7 +273,7 @@ impl Actor {
let mut conn = self.db.acquire().await?; let mut conn = self.db.acquire().await?;
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::ContractSetup { &CfdState::ContractSetup {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -332,7 +332,7 @@ impl Actor {
let mut conn = self.db.acquire().await?; let mut conn = self.db.acquire().await?;
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::Rejected { &CfdState::Rejected {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -372,7 +372,7 @@ impl Actor {
cfd.handle(CfdStateChangeEvent::ProposalSigned( cfd.handle(CfdStateChangeEvent::ProposalSigned(
TimestampedTransaction::new(tx), TimestampedTransaction::new(tx),
))?; ))?;
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state, &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
self.remove_pending_proposal(&order_id)?; self.remove_pending_proposal(&order_id)?;
@ -498,7 +498,7 @@ impl Actor {
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::PendingOpen { &CfdState::PendingOpen {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -544,7 +544,7 @@ impl Actor {
let mut conn = self.db.acquire().await?; let mut conn = self.db.acquire().await?;
insert_new_cfd_state_by_order_id( insert_new_cfd_state_by_order_id(
order_id, order_id,
CfdState::Open { &CfdState::Open {
common: CfdStateCommon { common: CfdStateCommon {
transition_timestamp: SystemTime::now(), transition_timestamp: SystemTime::now(),
}, },
@ -583,7 +583,7 @@ impl Actor {
return Ok(()); return Ok(());
} }
insert_new_cfd_state_by_order_id(order_id, cfd.state.clone(), &mut conn).await?; insert_new_cfd_state_by_order_id(order_id, &cfd.state, &mut conn).await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;
@ -620,7 +620,7 @@ impl Actor {
bail!("If we can get the commit tx we should be able to transition") bail!("If we can get the commit tx we should be able to transition")
} }
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;
@ -658,7 +658,7 @@ impl Actor {
continue; continue;
} }
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn).await?; insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;
@ -684,8 +684,7 @@ impl Actor {
bail!("If we can get the CET we should be able to transition") bail!("If we can get the CET we should be able to transition")
} }
insert_new_cfd_state_by_order_id(cfd.order.id, cfd.state.clone(), &mut conn) insert_new_cfd_state_by_order_id(cfd.order.id, &cfd.state, &mut conn).await?;
.await?;
self.cfd_feed_actor_inbox self.cfd_feed_actor_inbox
.send(load_all_cfds(&mut conn).await?)?; .send(load_all_cfds(&mut conn).await?)?;

Loading…
Cancel
Save