Disable serum fill change/drop detection, rename connector metrics

This commit is contained in:
Riordan Panayides 2023-01-18 19:39:53 +00:00
parent b89faa1ed0
commit 393e10c440
2 changed files with 68 additions and 68 deletions

View File

@ -31,7 +31,6 @@ pub enum FillUpdateStatus {
} }
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct FillUpdate { pub struct FillUpdate {
pub event: FillEvent, pub event: FillEvent,
pub status: FillUpdateStatus, pub status: FillUpdateStatus,
@ -187,7 +186,7 @@ fn publish_changes_perp(
.unwrap_or(0); .unwrap_or(0);
let mut checkpoint = Vec::new(); let mut checkpoint = Vec::new();
let mkt_pk_string = mkt.0.to_string(); let mkt_pk_string = mkt.0.to_string();
let evq_pk_string = mkt.0.to_string(); let evq_pk_string = mkt.1.to_string();
for seq_num in start_seq_num..header.seq_num { for seq_num in start_seq_num..header.seq_num {
let idx = (seq_num % MAX_NUM_EVENTS as u64) as usize; let idx = (seq_num % MAX_NUM_EVENTS as u64) as usize;
@ -271,7 +270,6 @@ fn publish_changes_perp(
// in case queue size shrunk due to a fork we need revoke all previous fills // in case queue size shrunk due to a fork we need revoke all previous fills
for seq_num in header.seq_num..old_seq_num { for seq_num in header.seq_num..old_seq_num {
let idx = (seq_num % MAX_NUM_EVENTS as u64) as usize; let idx = (seq_num % MAX_NUM_EVENTS as u64) as usize;
debug!( debug!(
"found dropped event {} idx {} seq_num {} header seq num {} old seq num {}", "found dropped event {} idx {} seq_num {} header seq num {} old seq num {}",
mkt_pk_string, idx, seq_num, header.seq_num, old_seq_num mkt_pk_string, idx, seq_num, header.seq_num, old_seq_num
@ -357,77 +355,77 @@ fn publish_changes_serum(
continue; continue;
} }
match old_event_view { // match old_event_view {
EventView::Fill { .. } => { // EventView::Fill { .. } => {
// every already published event is recorded in checkpoint // // every already published event is recorded in checkpoint
checkpoint.push(events[idx]); // checkpoint.push(events[idx]);
} // }
EventView::Out { .. } => { // EventView::Out { .. } => {
debug!( // debug!(
"found changed event {} idx {} seq_num {} header seq num {} old seq num {}", // "found changed event {} idx {} seq_num {} header seq num {} old seq num {}",
mkt_pk_string, idx, seq_num, header_seq_num, old_seq_num // mkt_pk_string, idx, seq_num, header_seq_num, old_seq_num
); // );
metric_events_change.increment(); // metric_events_change.increment();
// first revoke old event // // first revoke old event
fill_update_sender // fill_update_sender
.try_send(FillEventFilterMessage::SerumUpdate(SerumFillUpdate { // .try_send(FillEventFilterMessage::SerumUpdate(SerumFillUpdate {
slot, // slot,
write_version, // write_version,
event: old_events[idx], // event: old_events[idx],
status: FillUpdateStatus::Revoke, // status: FillUpdateStatus::Revoke,
market: mkt_pk_string.clone(), // market: mkt_pk_string.clone(),
queue: evq_pk_string.clone(), // queue: evq_pk_string.clone(),
})) // }))
.unwrap(); // TODO: use anyhow to bubble up error // .unwrap(); // TODO: use anyhow to bubble up error
// then publish new if its a fill and record in checkpoint // // then publish new if its a fill and record in checkpoint
fill_update_sender // fill_update_sender
.try_send(FillEventFilterMessage::SerumUpdate(SerumFillUpdate { // .try_send(FillEventFilterMessage::SerumUpdate(SerumFillUpdate {
slot, // slot,
write_version, // write_version,
event: events[idx], // event: events[idx],
status: FillUpdateStatus::New, // status: FillUpdateStatus::New,
market: mkt_pk_string.clone(), // market: mkt_pk_string.clone(),
queue: evq_pk_string.clone(), // queue: evq_pk_string.clone(),
})) // }))
.unwrap(); // TODO: use anyhow to bubble up error // .unwrap(); // TODO: use anyhow to bubble up error
checkpoint.push(events[idx]); // checkpoint.push(events[idx]);
} // }
} // }
} }
_ => continue, _ => continue,
} }
} }
// in case queue size shrunk due to a fork we need revoke all previous fills // // in case queue size shrunk due to a fork we need revoke all previous fills
for seq_num in header_seq_num..old_seq_num { // for seq_num in header_seq_num..old_seq_num {
let idx = (seq_num % MAX_NUM_EVENTS as u64) as usize; // let idx = (seq_num % MAX_NUM_EVENTS as u64) as usize;
let old_event_view = old_events[idx].as_view().unwrap(); // let old_event_view = old_events[idx].as_view().unwrap();
debug!( // debug!(
"found dropped event {} idx {} seq_num {} header seq num {} old seq num {}", // "found dropped event {} idx {} seq_num {} header seq num {} old seq num {}",
mkt_pk_string, idx, seq_num, header_seq_num, old_seq_num // mkt_pk_string, idx, seq_num, header_seq_num, old_seq_num
); // );
metric_events_drop.increment(); // metric_events_drop.increment();
match old_event_view { // match old_event_view {
EventView::Fill { .. } => { // EventView::Fill { .. } => {
fill_update_sender // fill_update_sender
.try_send(FillEventFilterMessage::SerumUpdate(SerumFillUpdate { // .try_send(FillEventFilterMessage::SerumUpdate(SerumFillUpdate {
slot, // slot,
event: old_events[idx], // event: old_events[idx],
write_version, // write_version,
status: FillUpdateStatus::Revoke, // status: FillUpdateStatus::Revoke,
market: mkt_pk_string.clone(), // market: mkt_pk_string.clone(),
queue: evq_pk_string.clone(), // queue: evq_pk_string.clone(),
})) // }))
.unwrap(); // TODO: use anyhow to bubble up error // .unwrap(); // TODO: use anyhow to bubble up error
} // }
EventView::Out { .. } => { continue } // EventView::Out { .. } => { continue }
} // }
} // }
fill_update_sender fill_update_sender
.try_send(FillEventFilterMessage::SerumCheckpoint( .try_send(FillEventFilterMessage::SerumCheckpoint(
@ -455,6 +453,8 @@ pub async fn init(
let mut metric_events_new = let mut metric_events_new =
metrics_sender.register_u64("fills_feed_events_new".into(), MetricType::Counter); metrics_sender.register_u64("fills_feed_events_new".into(), MetricType::Counter);
let mut metric_events_new_serum =
metrics_sender.register_u64("fills_feed_events_new_serum".into(), MetricType::Counter);
let mut metric_events_change = let mut metric_events_change =
metrics_sender.register_u64("fills_feed_events_change".into(), MetricType::Counter); metrics_sender.register_u64("fills_feed_events_change".into(), MetricType::Counter);
let mut metrics_events_drop = let mut metrics_events_drop =
@ -597,7 +597,7 @@ pub async fn init(
*old_seq_num, *old_seq_num,
old_events, old_events,
&fill_update_sender, &fill_update_sender,
&mut metric_events_new, &mut metric_events_new_serum,
&mut metric_events_change, &mut metric_events_change,
&mut metrics_events_drop, &mut metrics_events_drop,
), ),

View File

@ -395,11 +395,11 @@ pub async fn process_events(
let mut metric_account_writes = let mut metric_account_writes =
metrics_sender.register_u64("grpc_account_writes".into(), MetricType::Counter); metrics_sender.register_u64("grpc_account_writes".into(), MetricType::Counter);
let mut metric_account_queue = let mut metric_account_queue =
metrics_sender.register_u64("account_write_queue".into(), MetricType::Gauge); metrics_sender.register_u64("grpc_account_write_queue".into(), MetricType::Gauge);
let mut metric_dedup_queue = let mut metric_dedup_queue =
metrics_sender.register_u64("dedup_queue".into(), MetricType::Gauge); metrics_sender.register_u64("grpc_dedup_queue".into(), MetricType::Gauge);
let mut metric_slot_queue = let mut metric_slot_queue =
metrics_sender.register_u64("slot_update_queue".into(), MetricType::Gauge); metrics_sender.register_u64("grpc_slot_update_queue".into(), MetricType::Gauge);
let mut metric_slot_updates = let mut metric_slot_updates =
metrics_sender.register_u64("grpc_slot_updates".into(), MetricType::Counter); metrics_sender.register_u64("grpc_slot_updates".into(), MetricType::Counter);
let mut metric_snapshots = let mut metric_snapshots =