Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- type Host = Text
- type Port = Int
- type Error = Text
- data Track
- data Check
- resultTime :: Check -> UTCTime
- isSuccess :: Check -> Bool
- getReadiness :: ClientM Readiness
- check :: Manager -> Host -> Port -> IO (Either Error Check)
- data CheckSummary = CheckSummary {}
- healthChecked :: CheckSummary -> Bool
- neverHealthy :: CheckSummary -> Bool
- recentlyHealthy :: CheckSummary -> Bool
- emptyCheckSummary :: CheckSummary
- updateSummary :: Either Error Check -> CheckSummary -> CheckSummary
- type CheckMap = Map (Host, Port) (BackgroundVal CheckSummary)
- emptyCheckMap :: CheckMap
- initBackgroundCheck :: SpaceCounters -> Manager -> Tracer IO (Track CheckSummary) -> (Host, Port) -> IO (BackgroundVal CheckSummary)
- terminateBackgroundCheck :: BackgroundVal CheckSummary -> IO ()
- data Space = Space {
- spacehttpManager :: Manager
- backgroundChecks :: IORef CheckMap
- requestCheck :: (Host, Port) -> IO (BackgroundVal CheckSummary)
- cancelCheck :: (Host, Port) -> IO ()
- clearSpace :: Space -> IO ()
- data Counters = Counters {
- healthcheck_added :: !(Vector Text Counter)
- healthcheck_removed :: !(Vector Text Counter)
- healthcheck_count :: !(Vector Text Counter)
- newCounters :: IO Counters
- type WithSpaceCounter = (Counter -> IO ()) -> IO ()
- data SpaceCounters = SpaceCounters {}
- namespaceCounters :: Namespace -> Counters -> SpaceCounters
- initSpace :: SpaceCounters -> Manager -> Tracer IO Track -> IO Space
- setChecks :: Space -> [(Host, Port)] -> IO ()
- cancelDeadChecks :: Space -> IO ()
- setChecksFromDNSDiscovery :: Space -> DNSTrack [(Host, Port)] -> IO ()
- addChecksFromDNSDiscovery :: Space -> DNSTrack [(Host, Port)] -> IO ()
- type SummaryMap = Map (Host, Port) CheckSummary
- readCheckMap :: CheckMap -> IO SummaryMap
- readBackgroundChecks :: Space -> IO SummaryMap
- healthyKeys :: SummaryMap -> [(Host, Port)]
- deadKeys :: SummaryMap -> [(Host, Port)]
- safeHead :: [a] -> Maybe a
- type Namespace = Text
- type Namespaced a = (Namespace, a)
- data Runtime = Runtime {}
- initRuntime :: Tracer IO (Namespaced Track) -> IO Runtime
- readSpaces :: Runtime -> IO (Map Namespace SummaryMap)
- registerSpace :: Runtime -> Namespace -> IO Space
- withSpace :: Runtime -> Namespace -> (Space -> IO a) -> IO a
- initRuntimeSpace :: Runtime -> Namespace -> IO Space
Documentation
Instances
FromJSON Check Source # | |
Defined in Prod.Healthcheck | |
ToJSON Check Source # | |
Generic Check Source # | |
Show Check Source # | |
type Rep Check Source # | |
Defined in Prod.Healthcheck type Rep Check = D1 ('MetaData "Check" "Prod.Healthcheck" "prodapi-0.1.0.0-JQUOoBQvqFbCBOZ6p0aEZ7" 'False) (C1 ('MetaCons "Success" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Readiness)) :+: C1 ('MetaCons "Failed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Error))) |
resultTime :: Check -> UTCTime Source #
data CheckSummary Source #
Instances
healthChecked :: CheckSummary -> Bool Source #
Predicate to tell if a Summary contains a long-enough check history to be considered.
neverHealthy :: CheckSummary -> Bool Source #
Predicate to tell if a Summary contains no recent successful healthcheck.
recentlyHealthy :: CheckSummary -> Bool Source #
Predicate to tell if the most recent summary exists and is successful.
updateSummary :: Either Error Check -> CheckSummary -> CheckSummary Source #
type CheckMap = Map (Host, Port) (BackgroundVal CheckSummary) Source #
initBackgroundCheck :: SpaceCounters -> Manager -> Tracer IO (Track CheckSummary) -> (Host, Port) -> IO (BackgroundVal CheckSummary) Source #
Space | |
|
clearSpace :: Space -> IO () Source #
Counters | |
|
newCounters :: IO Counters Source #
data SpaceCounters Source #
namespaceCounters :: Namespace -> Counters -> SpaceCounters Source #
cancelDeadChecks :: Space -> IO () Source #
setChecksFromDNSDiscovery :: Space -> DNSTrack [(Host, Port)] -> IO () Source #
Helper to build a Tracer to update hosts to check based on DNS-discovered answers. Note that the DNSTrack only gives Host, so you need to fmap the port.
addChecksFromDNSDiscovery :: Space -> DNSTrack [(Host, Port)] -> IO () Source #
Same as setChecksFromDNSDiscovery
but only adding new checks.
You should clear checks of permanently invalid backends.
type SummaryMap = Map (Host, Port) CheckSummary Source #
readCheckMap :: CheckMap -> IO SummaryMap Source #
readBackgroundChecks :: Space -> IO SummaryMap Source #
healthyKeys :: SummaryMap -> [(Host, Port)] Source #
Returns the set of (Host,Port) that are healthy in a given SummaryMap.
Healthiness consists in having the latest healthcheck as healthy.
deadKeys :: SummaryMap -> [(Host, Port)] Source #
Returns the set of (Host,Port) that have no recent successful activity provided there is enough health-checking history.
type Namespaced a = (Namespace, a) Source #
initRuntime :: Tracer IO (Namespaced Track) -> IO Runtime Source #
readSpaces :: Runtime -> IO (Map Namespace SummaryMap) Source #