jaeger-flamegraph 1.3.1 → 1.3.2
raw patch · 2 files changed
+11/−11 lines, 2 filesdep ~QuickCheckdep ~optparse-applicative
Dependency ranges changed: QuickCheck, optparse-applicative
Files
- exe/Main.hs +10/−10
- jaeger-flamegraph.cabal +1/−1
exe/Main.hs view
@@ -8,13 +8,14 @@ import Data.Aeson (eitherDecodeStrict) import qualified Data.ByteString as BS import Data.Foldable (traverse_)-import Data.List (intersect, nub, (\\))+import Data.List (intersect) import Data.List.Extra (groupSort) import Data.List.NonEmpty (NonEmpty ((:|)), toList) import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map+import Data.Set (Set) import qualified Data.Set as Set-import Data.Maybe (maybeToList)+import Data.Maybe (maybeToList, mapMaybe) import Data.Text (Text, intercalate, map, pack) import Data.Text.IO (putStrLn) import Jaeger.Data@@ -120,15 +121,14 @@ -- like you can in a single-parent world. This may make writing a GUI harder -- since you can't do certain flame-graph-like visualizations. buildFlames :: Processes -> Lookup -> [Flame]-buildFlames procs ss = build <$>- (maybeToList . lookupSpan =<< (nub $ roots ++ orphans))+buildFlames procs ss = mapMaybe (fmap build . lookupSpan) $ Set.toList $ roots `Set.union` orphans where- roots :: [Reference]- roots = fst <$> filter (\ (_, Span{..}) -> null references) ss- orphans :: [Reference]- orphans = Set.foldl' f [] absentees- where absentees = Map.keysSet children `Set.difference` Map.keysSet spans- f os absent = maybe os (os ++) $ Map.lookup absent children+ roots :: Set Reference+ roots = Map.keysSet $ Map.filter (\Span{..} -> null references) spans+ orphans :: Set Reference+ orphans = Set.foldl' f mempty absentees+ where absentees = Map.keysSet children `Set.difference` Map.keysSet spans+ f os absent = maybe os (\xs -> os `Set.union` Set.fromList xs) $ Map.lookup absent children spans :: Map Reference Span spans = Map.fromList ss children :: Map Reference [Reference]
jaeger-flamegraph.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: jaeger-flamegraph-version: 1.3.1+version: 1.3.2 synopsis: Generate flamegraphs from Jaeger .json dumps. license: BSD-3-Clause license-file: LICENSE