use std::sync::atomic::Ordering;
use crate::data::executor::core_loop::CoreLoop;
use crate::data::executor::handlers::transaction::overlay::{GraphTxnOverlay, TxnOverlay};
use crate::types::TxnId;
impl CoreLoop {
pub(in crate::data::executor) fn txn_overlay_mut(&mut self, txn_id: TxnId) -> &mut TxnOverlay {
if !self.txn_overlays.contains_key(&txn_id)
&& let Some(m) = &self.metrics
{
m.active_txn_overlays.fetch_add(1, Ordering::Relaxed);
}
let ord = self.hlc.next_ordinal();
let overlay = self.txn_overlays.entry(txn_id).or_default();
overlay.touch(ord);
overlay
}
pub(in crate::data::executor) fn graph_txn_overlay_mut(
&mut self,
txn_id: TxnId,
) -> &mut GraphTxnOverlay {
if !self.graph_txn_overlays.contains_key(&txn_id)
&& let Some(m) = &self.metrics
{
m.active_txn_overlays.fetch_add(1, Ordering::Relaxed);
}
let ord = self.hlc.next_ordinal();
let overlay = self.graph_txn_overlays.entry(txn_id).or_default();
overlay.touch(ord);
overlay
}
}