From 28292faea93888d18417dcf42eb2a4824bb75505 Mon Sep 17 00:00:00 2001 From: Philipp Mieden Date: Wed, 22 May 2019 09:52:58 +0200 Subject: [PATCH] commented out unused RepoNode constructor, updated pprof --- content/reponode.go | 14 +++++++------- contentserver.go | 9 ++++++++- contentserver.graffle | Bin 7838 -> 8683 bytes 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/content/reponode.go b/content/reponode.go index faf9e79..39f45fd 100644 --- a/content/reponode.go +++ b/content/reponode.go @@ -22,13 +22,13 @@ type RepoNode struct { // published from - to is going to be an array of fromTos } -// NewRepoNode constructor -func NewRepoNode() *RepoNode { - return &RepoNode{ - Data: make(map[string]interface{}), - Nodes: make(map[string]*RepoNode), - } -} +// // NewRepoNode constructor +// func NewRepoNode() *RepoNode { +// return &RepoNode{ +// Data: make(map[string]interface{}, 0), // set initial size to zero explicitely? +// Nodes: make(map[string]*RepoNode, 0), +// } +// } // WireParents helper method to reference from child to parent in a tree // recursively diff --git a/contentserver.go b/contentserver.go index e12249e..6aff610 100644 --- a/contentserver.go +++ b/contentserver.go @@ -11,6 +11,9 @@ import ( "github.com/foomo/contentserver/metrics" "github.com/foomo/contentserver/status" + "net/http" + _ "net/http/pprof" + "github.com/foomo/contentserver/log" "github.com/foomo/contentserver/server" ) @@ -66,6 +69,10 @@ func exitUsage(code int) { func main() { flag.Parse() + go func() { + fmt.Println(http.ListenAndServe("localhost:6060", nil)) + }() + if *flagShowVersionFlag { fmt.Printf("%v\n", uniqushPushVersion) return @@ -76,7 +83,7 @@ func main() { go func() { for { select { - case <-time.After(time.Duration(*flagFreeOSMem) * time.Second): + case <-time.After(time.Duration(*flagFreeOSMem) * time.Minute): log.Notice("FreeOSMemory") debug.FreeOSMemory() } diff --git a/contentserver.graffle b/contentserver.graffle index 75addb694fe252646213483693202f7f577e7fac..ccf971fd9bb6820fe0f8b8aaf2472d6e051455fc 100644 GIT binary patch literal 8683 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 JXNe}C007y~HiiHI literal 7838 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