| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Prod.Healthcheck
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
Constructors
| HealthCheckStarted Host Port | |
| HealthCheckFinished Host Port Check | |
| BackgroundTrack Host Port (Track CheckSummary) | 
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 #
Constructors
| CheckSummary | |
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 #
Constructors
| Space | |
Fields 
  | |
clearSpace :: Space -> IO () Source #
Constructors
| Counters | |
Fields 
  | |
newCounters :: IO Counters Source #
data SpaceCounters Source #
Constructors
| SpaceCounters | |
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 #