This commit is contained in:
Dominik Werder
2024-08-30 16:29:47 +02:00
parent 3ddcc90363
commit 79aa8d0466
10 changed files with 452 additions and 68 deletions
+10 -1
View File
@@ -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
+4 -3
View File
@@ -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 {