mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
fix: replace xtrim with xdel to support older redis version (#8515)
Co-authored-by: Akshay S <akshay.s@juspay.in> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -277,9 +277,15 @@ async fn drainer(
|
|||||||
_ => break,
|
_ => break,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if store.use_legacy_version() {
|
||||||
|
store
|
||||||
|
.delete_from_stream(stream_name, &last_processed_id)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !last_processed_id.is_empty() {
|
if !(last_processed_id.is_empty() || store.use_legacy_version()) {
|
||||||
let entries_trimmed = store
|
let entries_trimmed = store
|
||||||
.trim_from_stream(stream_name, &last_processed_id)
|
.trim_from_stream(stream_name, &last_processed_id)
|
||||||
.await?;
|
.await?;
|
||||||
|
|||||||
@ -18,3 +18,4 @@ histogram_metric_f64!(REDIS_STREAM_READ_TIME, DRAINER_METER); // Time in (ms) mi
|
|||||||
histogram_metric_f64!(REDIS_STREAM_TRIM_TIME, DRAINER_METER); // Time in (ms) milliseconds
|
histogram_metric_f64!(REDIS_STREAM_TRIM_TIME, DRAINER_METER); // Time in (ms) milliseconds
|
||||||
histogram_metric_f64!(CLEANUP_TIME, DRAINER_METER); // Time in (ms) milliseconds
|
histogram_metric_f64!(CLEANUP_TIME, DRAINER_METER); // Time in (ms) milliseconds
|
||||||
histogram_metric_u64!(DRAINER_DELAY_SECONDS, DRAINER_METER); // Time in (s) seconds
|
histogram_metric_u64!(DRAINER_DELAY_SECONDS, DRAINER_METER); // Time in (s) seconds
|
||||||
|
histogram_metric_f64!(REDIS_STREAM_DEL_TIME, DRAINER_METER); // Time in (ms) milliseconds
|
||||||
|
|||||||
@ -22,6 +22,7 @@ pub struct Store {
|
|||||||
pub struct StoreConfig {
|
pub struct StoreConfig {
|
||||||
pub drainer_stream_name: String,
|
pub drainer_stream_name: String,
|
||||||
pub drainer_num_partitions: u8,
|
pub drainer_num_partitions: u8,
|
||||||
|
pub use_legacy_version: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Store {
|
impl Store {
|
||||||
@ -45,10 +46,15 @@ impl Store {
|
|||||||
config: StoreConfig {
|
config: StoreConfig {
|
||||||
drainer_stream_name: config.drainer.stream_name.clone(),
|
drainer_stream_name: config.drainer.stream_name.clone(),
|
||||||
drainer_num_partitions: config.drainer.num_partitions,
|
drainer_num_partitions: config.drainer.num_partitions,
|
||||||
|
use_legacy_version: config.redis.use_legacy_version,
|
||||||
},
|
},
|
||||||
request_id: None,
|
request_id: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn use_legacy_version(&self) -> bool {
|
||||||
|
self.config.use_legacy_version
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn log_and_return_error_response<T>(error: Report<T>) -> HttpResponse
|
pub fn log_and_return_error_response<T>(error: Report<T>) -> HttpResponse
|
||||||
|
|||||||
@ -110,4 +110,27 @@ impl Store {
|
|||||||
// adding 1 because we are deleting the given id too
|
// adding 1 because we are deleting the given id too
|
||||||
Ok(trim_result? + 1)
|
Ok(trim_result? + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn delete_from_stream(
|
||||||
|
&self,
|
||||||
|
stream_name: &str,
|
||||||
|
entry_id: &str,
|
||||||
|
) -> errors::DrainerResult<()> {
|
||||||
|
let (_trim_result, execution_time) =
|
||||||
|
common_utils::date_time::time_it::<errors::DrainerResult<_>, _, _>(|| async {
|
||||||
|
self.redis_conn
|
||||||
|
.stream_delete_entries(&stream_name.into(), entry_id)
|
||||||
|
.await
|
||||||
|
.map_err(errors::DrainerError::from)?;
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
|
||||||
|
metrics::REDIS_STREAM_DEL_TIME.record(
|
||||||
|
execution_time,
|
||||||
|
router_env::metric_attributes!(("stream", stream_name.to_owned())),
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user