From 82dda8bfd787456f9f29a0617a11cb700cd23375 Mon Sep 17 00:00:00 2001 From: Achref ben saad Date: Tue, 22 Nov 2022 10:35:23 +0000 Subject: [PATCH] optimize auto-detected paths --- src/common/pathAggregator.go | 5 +++++ src/systempolicy/systemPolicy.go | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/common/pathAggregator.go b/src/common/pathAggregator.go index bcd7fd5f..856637e1 100644 --- a/src/common/pathAggregator.go +++ b/src/common/pathAggregator.go @@ -167,12 +167,17 @@ func buildPathTree(treeMap map[string]*Node, paths []string) { rootPath := tokenizedPaths[0] + if rootPath == "/tmp" { + tokenizedPaths = pattern.FindAllString("/tmp/", -1) + } + if rootNode, ok := treeMap[rootPath]; !ok { newRoot := &Node{ depth: 0, path: rootPath, touchCount: 1, childNodes: []*Node{}, + isDir: rootPath == "/tmp", } newRoot.insert(tokenizedPaths[1:]) diff --git a/src/systempolicy/systemPolicy.go b/src/systempolicy/systemPolicy.go index f59df21f..18b0b451 100644 --- a/src/systempolicy/systemPolicy.go +++ b/src/systempolicy/systemPolicy.go @@ -1288,6 +1288,27 @@ func GenFileSetForAllPodsInCluster(clusterName string, pods []types.Pod, settype mergedfs = common.AggregatePathsExt(mergedfs) // merge and sort the filesets } + sort.SliceStable(mergedfs, func(i, j int) bool { + return (len(mergedfs[i]) < len(mergedfs[j])) + }) + + i := 0 + lenMergedFs := len(mergedfs) + for i < lenMergedFs { + j := i + 1 + lenMergedFs = len(mergedfs) + if strings.HasSuffix(mergedfs[i], "/") { + for j < lenMergedFs { + if (len(mergedfs[i]) < len(mergedfs[j])) && strings.HasPrefix(mergedfs[j], mergedfs[i]) { + lenMergedFs-- + mergedfs = append(mergedfs[:j], mergedfs[j+1:]...) + continue + } + j++ + } + } + i++ + } // Add/Update DB Entry if !dbEntry { log.Info().Msgf("adding wpfs db entry for wpfs=%+v", wpfs)