WIP
This commit is contained in:
@@ -41,6 +41,7 @@ where
|
||||
{
|
||||
series: SeriesId,
|
||||
min_quiet: Duration,
|
||||
is_polled: bool,
|
||||
emit_state: <ET as EmittableType>::State,
|
||||
last_insert_ts: TsNano,
|
||||
last_insert_val: Option<ET>,
|
||||
@@ -57,6 +58,7 @@ where
|
||||
pub fn new(
|
||||
series: SeriesId,
|
||||
min_quiet: Duration,
|
||||
is_polled: bool,
|
||||
emit_state: <ET as EmittableType>::State,
|
||||
dbgname: String,
|
||||
) -> Result<Self, Error> {
|
||||
@@ -64,6 +66,7 @@ where
|
||||
let ret = Self {
|
||||
series,
|
||||
min_quiet,
|
||||
is_polled,
|
||||
emit_state,
|
||||
last_insert_ts: TsNano::from_ns(0),
|
||||
last_insert_val: None,
|
||||
@@ -113,9 +116,15 @@ where
|
||||
"{dbgname} {sid} ignore, because ts_local rewind {ts:?} {tsl:?}",
|
||||
);
|
||||
false
|
||||
} else if ts.ms() < tsl.ms() + min_quiet {
|
||||
} else 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 {
|
||||
trace_rt_decision!(
|
||||
det,
|
||||
"{dbgname} {sid} ignore, because not is-polled min quiet {ts:?} {tsl:?}"
|
||||
);
|
||||
false
|
||||
} else if ts < tsl.add_dt_nano(DtNano::from_ms(5)) {
|
||||
trace_rt_decision!(det, "{dbgname} {sid} ignore, because store rate cap");
|
||||
false
|
||||
|
||||
@@ -89,19 +89,20 @@ where
|
||||
scalar_type: ScalarType,
|
||||
shape: Shape,
|
||||
min_quiets: MinQuiets,
|
||||
is_polled: bool,
|
||||
emit_state_new: &dyn Fn() -> <ET as EmittableType>::State,
|
||||
) -> Result<Self, Error> {
|
||||
let state_st = {
|
||||
// let writer = SeriesWriter::establish_with_sid(sid, stnow)?;
|
||||
let writer = RateLimitWriter::new(series, min_quiets.st, emit_state_new(), "st".into())?;
|
||||
let writer = RateLimitWriter::new(series, min_quiets.st, is_polled, emit_state_new(), "st".into())?;
|
||||
State { writer }
|
||||
};
|
||||
let state_mt = {
|
||||
let writer = RateLimitWriter::new(series, min_quiets.mt, emit_state_new(), "mt".into())?;
|
||||
let writer = RateLimitWriter::new(series, min_quiets.mt, is_polled, emit_state_new(), "mt".into())?;
|
||||
State { writer }
|
||||
};
|
||||
let state_lt = {
|
||||
let writer = RateLimitWriter::new(series, min_quiets.lt, emit_state_new(), "lt".into())?;
|
||||
let writer = RateLimitWriter::new(series, min_quiets.lt, is_polled, emit_state_new(), "lt".into())?;
|
||||
State { writer }
|
||||
};
|
||||
let ret = Self {
|
||||
|
||||
Reference in New Issue
Block a user