Check monotonic timestamp common for all rt
This commit is contained in:
@@ -86,10 +86,10 @@ where
|
||||
// Decide whether we want to write.
|
||||
// TODO catch already in CaConn the cases when the IOC-timestamp did not change.
|
||||
let det = self.do_trace_detail;
|
||||
let tsl = self.last_insert_ts.clone();
|
||||
let dbgname = &self.dbgname;
|
||||
let sid = &self.series;
|
||||
let min_quiet = 1000 * self.min_quiet.as_secs() + self.min_quiet.subsec_millis() as u64;
|
||||
let tsl = self.last_insert_ts.clone();
|
||||
let ts = tsev;
|
||||
if false {
|
||||
trace_rt_decision!(
|
||||
@@ -104,20 +104,7 @@ where
|
||||
);
|
||||
}
|
||||
let do_write = {
|
||||
if ts == tsl {
|
||||
trace_rt_decision!(det, "{dbgname} {sid} ignore, because same time {ts:?} {tsl:?}");
|
||||
false
|
||||
} else if ts < tsl {
|
||||
trace_rt_decision!(
|
||||
det,
|
||||
"{} {} ignore, because ts_local rewind {:?} {:?}",
|
||||
dbgname,
|
||||
sid,
|
||||
ts,
|
||||
tsl
|
||||
);
|
||||
false
|
||||
} else if !self.is_polled && ts.ms() < tsl.ms() + min_quiet {
|
||||
if !self.is_polled && ts.ms() < tsl.ms() + min_quiet {
|
||||
trace_rt_decision!(det, "{dbgname} {sid} ignore, because not min quiet {ts:?} {tsl:?}");
|
||||
false
|
||||
} else if self.is_polled && ts.ms() + 800 < tsl.ms() + min_quiet {
|
||||
|
||||
@@ -157,13 +157,27 @@ where
|
||||
) -> Result<WriteRes, Error> {
|
||||
let det = self.do_trace_detail;
|
||||
trace_emit!(det, "write {:?}", item.ts());
|
||||
// TODO
|
||||
// Optimize for the common case that we only write into one of the stores.
|
||||
// Make the decision first, based on ref, then clone only as required.
|
||||
let res_lt;
|
||||
let res_mt;
|
||||
let res_st;
|
||||
if self
|
||||
let tsl = self.last_insert_ts.clone();
|
||||
if tsev < tsl {
|
||||
trace_rt_decision!(
|
||||
det,
|
||||
"{} ignore, because rewind time {:?} {:?}",
|
||||
self.series,
|
||||
tsev,
|
||||
tsl
|
||||
);
|
||||
res_lt = WriteRtRes::default();
|
||||
res_mt = WriteRtRes::default();
|
||||
res_st = WriteRtRes::default();
|
||||
} else if tsev == tsl {
|
||||
trace_rt_decision!(det, "{} ignore, because same time {:?} {:?}", self.series, tsev, tsl);
|
||||
res_lt = WriteRtRes::default();
|
||||
res_mt = WriteRtRes::default();
|
||||
res_st = WriteRtRes::default();
|
||||
} else if self
|
||||
.last_insert_val
|
||||
.as_ref()
|
||||
.map(|k| item.has_change(k))
|
||||
|
||||
Reference in New Issue
Block a user