Skip to main content

RedisSentinelHandle

Struct RedisSentinelHandle 

Source
pub struct RedisSentinelHandle { /* private fields */ }
Expand description

A running Redis Sentinel topology. Stops everything on Drop.

Implementations§

Source§

impl RedisSentinelHandle

Source

pub fn master_addr(&self) -> String

The master’s address.

Source

pub fn monitored_master_names(&self) -> Vec<&str>

All monitored master names.

Source

pub fn monitored_master_addrs(&self) -> Vec<String>

All monitored master addresses.

Source

pub fn pids(&self) -> Vec<u32>

The PIDs of all processes in the topology (master, replicas, sentinels).

Source

pub fn sentinel_addrs(&self) -> Vec<String>

All sentinel addresses.

Source

pub fn master_name(&self) -> &str

The monitored master name.

Source

pub async fn poke(&self) -> Result<HashMap<String, String>>

Query a sentinel for the primary monitored master’s status.

Iterates over the sentinel processes until one responds, then runs SENTINEL MASTER <name> and returns the result as a flat key/value map.

Common keys in the returned map include "ip", "port", "flags", "num-slaves", and "num-other-sentinels".

Returns Error::NoReachableSentinel if no sentinel responds.

Source

pub async fn poke_master( &self, master_name: &str, ) -> Result<HashMap<String, String>>

Query a sentinel for a specific monitored master’s status.

Like poke but targets master_name instead of the primary master configured for this topology.

Source

pub async fn is_healthy(&self) -> bool

Check if the topology is healthy.

Source

pub async fn wait_for_healthy(&self, timeout: Duration) -> Result<()>

Wait until the topology is healthy or timeout.

Source

pub fn stop(&self)

Stop everything via an escalating shutdown strategy.

  1. Sends SHUTDOWN NOSAVE to each sentinel process.
  2. Waits 500ms for them to exit.
  3. For each sentinel PID that is still alive, calls crate::process::force_kill.
  4. Calls crate::process::kill_by_port for each sentinel port as a safety net.

Replicas and the master are stopped by their own handles’ Drop impls, which also use the escalating strategy.

Trait Implementations§

Source§

impl Drop for RedisSentinelHandle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.