mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-09 06:42:57 +00:00
feat: introduce HeartbeatHandlerGroupBuilderCustomizer (#4803)
* feat: introduce `HeartbeatHandlerGroupBuilderFinalizer` * chore: rename to `HeartbeatHandlerGroupBuilderCustomizer`
This commit is contained in:
@@ -527,11 +527,22 @@ impl HeartbeatHandlerGroupBuilder {
|
||||
}
|
||||
|
||||
/// Builds the group of heartbeat handlers.
|
||||
pub fn build(self) -> HeartbeatHandlerGroup {
|
||||
HeartbeatHandlerGroup {
|
||||
///
|
||||
/// Applies the customizer if it exists.
|
||||
pub fn build(mut self) -> Result<HeartbeatHandlerGroup> {
|
||||
if let Some(customizer) = self
|
||||
.plugins
|
||||
.as_ref()
|
||||
.and_then(|plugins| plugins.get::<HeartbeatHandlerGroupBuilderCustomizerRef>())
|
||||
{
|
||||
debug!("Customizing the heartbeat handler group builder");
|
||||
customizer.customize(&mut self)?;
|
||||
}
|
||||
|
||||
Ok(HeartbeatHandlerGroup {
|
||||
handlers: self.handlers.into_iter().collect(),
|
||||
pushers: self.pushers,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// Adds the handler after the specified handler.
|
||||
@@ -582,6 +593,14 @@ impl HeartbeatHandlerGroupBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
pub type HeartbeatHandlerGroupBuilderCustomizerRef =
|
||||
Arc<dyn HeartbeatHandlerGroupBuilderCustomizer>;
|
||||
|
||||
/// The customizer of the [`HeartbeatHandlerGroupBuilder`].
|
||||
pub trait HeartbeatHandlerGroupBuilderCustomizer: Send + Sync {
|
||||
fn customize(&self, builder: &mut HeartbeatHandlerGroupBuilder) -> Result<()>;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
||||
@@ -670,7 +689,8 @@ mod tests {
|
||||
fn test_handler_group_builder() {
|
||||
let group = HeartbeatHandlerGroupBuilder::new(Pushers::default())
|
||||
.add_default_handlers()
|
||||
.build();
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(12, handlers.len());
|
||||
@@ -706,7 +726,7 @@ mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(13, handlers.len());
|
||||
|
||||
@@ -739,7 +759,7 @@ mod tests {
|
||||
.add_handler_before("ResponseHeaderHandler", CollectStatsHandler::default())
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(13, handlers.len());
|
||||
|
||||
@@ -772,7 +792,7 @@ mod tests {
|
||||
.add_handler_after("MailboxHandler", CollectStatsHandler::default())
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(13, handlers.len());
|
||||
|
||||
@@ -805,7 +825,7 @@ mod tests {
|
||||
.add_handler_after("CollectStatsHandler", ResponseHeaderHandler)
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(13, handlers.len());
|
||||
|
||||
@@ -838,7 +858,7 @@ mod tests {
|
||||
.replace_handler("MailboxHandler", CollectStatsHandler::default())
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(12, handlers.len());
|
||||
|
||||
@@ -870,7 +890,7 @@ mod tests {
|
||||
.replace_handler("CollectStatsHandler", ResponseHeaderHandler)
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(12, handlers.len());
|
||||
|
||||
@@ -902,7 +922,7 @@ mod tests {
|
||||
.replace_handler("ResponseHeaderHandler", CollectStatsHandler::default())
|
||||
.unwrap();
|
||||
|
||||
let group = builder.build();
|
||||
let group = builder.build().unwrap();
|
||||
let handlers = group.handlers;
|
||||
assert_eq!(12, handlers.len());
|
||||
|
||||
|
||||
@@ -363,7 +363,7 @@ impl MetasrvBuilder {
|
||||
.with_region_failure_handler(region_failover_handler)
|
||||
.with_region_lease_handler(Some(region_lease_handler))
|
||||
.add_default_handlers()
|
||||
.build()
|
||||
.build()?
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user