Skip to content

Commit 6abcf0f

Browse files
committed
trace-dispatcher: Config without merging options
TraceOptionForwarder config adoption
1 parent 3f50047 commit 6abcf0f

File tree

4 files changed

+11
-50
lines changed

4 files changed

+11
-50
lines changed

trace-dispatcher/examples/Examples/Configuration.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ config1 = TraceConfig {
4848
, (["tracer2","TestMessage"], [ConfSeverity (SeverityF (Just Critical))])
4949
, (["tracer3","TestMessage"], [ConfSeverity (SeverityF (Just Info))])
5050
]
51-
, tcForwarder = TraceOptionForwarder {
51+
, tcForwarder = Just TraceOptionForwarder {
5252
tofConnQueueSize = 100
5353
, tofDisconnQueueSize = 1000
5454
, tofVerbosity = Minimum
@@ -65,7 +65,7 @@ config2 = TraceConfig {
6565
, (["tracer2","TestMessage"], [ConfSeverity (SeverityF (Just Warning))])
6666
, (["tracer3","TestMessage"], [ConfSeverity (SeverityF (Just Warning))])
6767
]
68-
, tcForwarder = TraceOptionForwarder {
68+
, tcForwarder = Just TraceOptionForwarder {
6969
tofConnQueueSize = 100
7070
, tofDisconnQueueSize = 1000
7171
, tofVerbosity = Minimum

trace-dispatcher/examples/Examples/Documentation.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ config1 = TraceConfig {
4747
[ ([], [ConfSeverity (SeverityF Nothing)])
4848
, (["node2"], [ConfSeverity (SeverityF (Just Info))])
4949
]
50-
, tcForwarder = TraceOptionForwarder {
50+
, tcForwarder = Just TraceOptionForwarder {
5151
tofConnQueueSize = 100
5252
, tofDisconnQueueSize = 1000
5353
, tofVerbosity = Minimum

trace-dispatcher/src/Cardano/Logging/ConfigurationParser.hs

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{-# LANGUAGE DeriveGeneric #-}
22
{-# LANGUAGE DerivingStrategies #-}
3-
{-# LANGUAGE LambdaCase #-}
43
{-# LANGUAGE RecordWildCards #-}
54
{-# LANGUAGE ScopedTypeVariables #-}
65

@@ -17,10 +16,9 @@ import Control.Exception (throwIO)
1716
import qualified Data.Aeson as AE
1817
import Data.ByteString (ByteString)
1918
import qualified Data.ByteString.Char8 as BS
20-
import Data.Functor
2119
import Data.List (foldl')
2220
import qualified Data.Map.Strict as Map
23-
import Data.Maybe (fromMaybe, isJust)
21+
import Data.Maybe (isJust)
2422
import Data.Text (Text, split)
2523
import Data.Yaml
2624
import GHC.Generics
@@ -51,11 +49,12 @@ readConfigurationWithDefault fp defaultConf = do
5149
fileConf <- either throwIO pure . parseRepresentation =<< BS.readFile fp
5250
pure $ mergeWithDefault fileConf defaultConf
5351

54-
5552
mergeWithDefault :: TraceConfig -> TraceConfig -> TraceConfig
5653
mergeWithDefault fileConf defaultConf =
5754
TraceConfig
58-
(mergeOptionsWithDefault (tcOptions fileConf) (tcOptions defaultConf))
55+
(if (not . Map.null) (tcOptions fileConf)
56+
then tcOptions fileConf
57+
else tcOptions defaultConf)
5958
(tcForwarder fileConf)
6059
(if isJust (tcNodeName fileConf)
6160
then tcNodeName fileConf
@@ -67,44 +66,6 @@ mergeWithDefault fileConf defaultConf =
6766
then tcResourceFrequency fileConf
6867
else tcResourceFrequency defaultConf)
6968

70-
mergeOptionsWithDefault ::
71-
Map.Map [Text] [ConfigOption]
72-
-> Map.Map [Text] [ConfigOption]
73-
-> Map.Map [Text] [ConfigOption]
74-
mergeOptionsWithDefault fileOpts defaultOpts =
75-
foldr mergeOptsNs defaultOpts (Map.toList fileOpts)
76-
where
77-
mergeOptsNs :: ([Text],[ConfigOption]) -> Map.Map [Text] [ConfigOption] -> Map.Map [Text] [ConfigOption]
78-
mergeOptsNs (ns,opts) into =
79-
case Map.lookup ns into of
80-
Nothing -> Map.insert ns opts into
81-
Just currentOpts -> Map.insert ns (mergeOpts opts currentOpts) into
82-
83-
mergeOpts :: [ConfigOption] -> [ConfigOption] -> [ConfigOption]
84-
mergeOpts fromFile fromDefault = foldr mergeOpt fromDefault fromFile
85-
86-
mergeOpt :: ConfigOption -> [ConfigOption] -> [ConfigOption]
87-
mergeOpt (ConfSeverity severityF) configList =
88-
ConfSeverity severityF : filter (\case
89-
ConfSeverity _ -> False
90-
_ -> True) configList
91-
mergeOpt (ConfDetail detailLevel) configList =
92-
ConfDetail detailLevel : filter (\case
93-
ConfDetail _ -> False
94-
_ -> True) configList
95-
mergeOpt (ConfBackend backendConfig) configList =
96-
ConfBackend backendConfig : filter (\case
97-
ConfBackend _ -> False
98-
_ -> True) configList
99-
mergeOpt (ConfLimiter maxFrequency) configList =
100-
if maxFrequency /= 0.0
101-
then ConfLimiter maxFrequency : filter (\case
102-
ConfLimiter _ -> False
103-
_ -> True) configList
104-
else filter (\case
105-
ConfLimiter _ -> False
106-
_ -> True) configList
107-
10869
parseRepresentation :: ByteString -> Either ParseException TraceConfig
10970
parseRepresentation bs = transform (decodeEither' bs)
11071
where
@@ -136,7 +97,7 @@ parseRepresentation bs = transform (decodeEither' bs)
13697

13798
data ConfigRepresentation = ConfigRepresentation {
13899
traceOptions :: OptionsRepresentation
139-
, traceOptionForwarder :: TraceOptionForwarder
100+
, traceOptionForwarder :: Maybe TraceOptionForwarder
140101
, traceOptionNodeName :: Maybe Text
141102
, traceOptionPeerFrequency :: Maybe Int
142103
, traceOptionResourceFrequency :: Maybe Int
@@ -148,7 +109,7 @@ type OptionsRepresentation = Map.Map Text ConfigOptionRep
148109
instance AE.FromJSON ConfigRepresentation where
149110
parseJSON (Object obj) = ConfigRepresentation
150111
<$> obj .: "TraceOptions"
151-
<*> (obj .:? "TraceOptionForwarder" <&> fromMaybe defaultForwarder)
112+
<*> obj .:? "TraceOptionForwarder"
152113
<*> obj .:? "TraceOptionNodeName"
153114
<*> obj .:? "TraceOptionPeerFrequency"
154115
<*> obj .:? "TraceOptionResourceFrequency"

trace-dispatcher/src/Cardano/Logging/Types.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ data TraceConfig = TraceConfig {
442442
-- | Options specific to a certain namespace
443443
tcOptions :: Map.Map [Text] [ConfigOption]
444444
-- | Options for the forwarder
445-
, tcForwarder :: TraceOptionForwarder
445+
, tcForwarder :: Maybe TraceOptionForwarder
446446
-- | Optional human-readable name of the node.
447447
, tcNodeName :: Maybe Text
448448
-- | Optional peer trace frequency in milliseconds.
@@ -455,7 +455,7 @@ data TraceConfig = TraceConfig {
455455
emptyTraceConfig :: TraceConfig
456456
emptyTraceConfig = TraceConfig {
457457
tcOptions = Map.empty
458-
, tcForwarder = defaultForwarder
458+
, tcForwarder = Nothing
459459
, tcNodeName = Nothing
460460
, tcPeerFrequency = Just 2000 -- Every 2 seconds
461461
, tcResourceFrequency = Just 5000 -- Every five seconds

0 commit comments

Comments
 (0)