Add setting that says how much time to keep retrying activity delivery

This commit is contained in:
fr33domlover 2019-04-01 23:38:44 +00:00
parent a3bd0356e2
commit 0c280c7af6
2 changed files with 22 additions and 3 deletions

View file

@ -131,7 +131,6 @@ max-accounts: 3
# Federation
###############################################################################
# Whether to support federation. This includes:
#
# * Accept activities from other servers in the inbox
@ -148,3 +147,11 @@ hashids-salt-file: config/hashids_salt
# Whether to reject an HTTP signature when we want to insert a new key or usage
# record but reached the limit setting
reject-on-max-keys: true
# The duration of time during which a remote actor is unreachable and we
# periodically retry to deliver them activities. After that period of time, we
# stop trying to deliver and we remove them from follower lists of local
# actors.
drop-delivery-after:
amount: 25
unit: weeks

View file

@ -31,8 +31,10 @@ import Control.Exception (throw)
import Data.Aeson (Result (..), fromJSON, withObject, (.!=),
(.:?))
import Data.FileEmbed (embedFile)
import Data.Time.Interval (TimeInterval)
import Data.Time.Interval.Aeson (interval)
import Data.Time.Clock
import Data.Time.Interval
import Data.Time.Interval.Aeson
import Data.Time.Units
import Data.Yaml (decodeEither')
import Database.Persist.Postgresql (PostgresConf)
import Language.Haskell.TH.Syntax (Exp, Name, Q)
@ -139,6 +141,11 @@ data AppSettings = AppSettings
-- over HTTP, which possibly means we have to do more HTTP key fetching,
-- and the target server gets a higher load of key fetch GET requests.
, appRejectOnMaxKeys :: Bool
-- | The duration of time during which a remote actor is unreachable and
-- we periodically retry to deliver them activities. After that period of
-- time, we stop trying to deliver and we remove them from follower lists
-- of local actors.
, appDropDeliveryAfter :: NominalDiffTime
}
instance FromJSON AppSettings where
@ -185,8 +192,13 @@ instance FromJSON AppSettings where
appCapabilitySigningKeyFile <- o .: "capability-signing-key"
appHashidsSaltFile <- o .: "hashids-salt-file"
appRejectOnMaxKeys <- o .: "reject-on-max-keys"
appDropDeliveryAfter <- ndt <$> o .: "drop-delivery-after"
return AppSettings {..}
where
toSeconds :: TimeInterval -> Second
toSeconds = toTimeUnit
ndt = fromIntegral . toSeconds . interval
-- | Settings for 'widgetFile', such as which template languages to support and
-- default Hamlet settings.