From 3b783fbf974b1a5fc6a7c62242da105aa5137411 Mon Sep 17 00:00:00 2001 From: Arceliar Date: Wed, 6 Jun 2018 23:10:33 -0500 Subject: [PATCH] move periodic switch maintenance into the router instead of its own goroutine --- src/yggdrasil/core.go | 5 ----- src/yggdrasil/debug.go | 4 ---- src/yggdrasil/router.go | 1 + src/yggdrasil/switch.go | 15 +-------------- 4 files changed, 2 insertions(+), 23 deletions(-) diff --git a/src/yggdrasil/core.go b/src/yggdrasil/core.go index b94d154..3b5fcc1 100644 --- a/src/yggdrasil/core.go +++ b/src/yggdrasil/core.go @@ -103,11 +103,6 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) error { return err } - if err := c.switchTable.start(); err != nil { - c.log.Println("Failed to start switch table ticker") - return err - } - if err := c.admin.start(); err != nil { c.log.Println("Failed to start admin socket") return err diff --git a/src/yggdrasil/debug.go b/src/yggdrasil/debug.go index 599ee90..940db79 100644 --- a/src/yggdrasil/debug.go +++ b/src/yggdrasil/debug.go @@ -36,7 +36,6 @@ func (c *Core) Init() { spub, spriv := newSigKeys() c.init(bpub, bpriv, spub, spriv) c.router.start() - c.switchTable.start() } //////////////////////////////////////////////////////////////////////////////// @@ -310,9 +309,6 @@ func (c *Core) DEBUG_init(bpub []byte, panic(err) } - if err := c.switchTable.start(); err != nil { - panic(err) - } } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/yggdrasil/router.go b/src/yggdrasil/router.go index a8797d5..872a473 100644 --- a/src/yggdrasil/router.go +++ b/src/yggdrasil/router.go @@ -91,6 +91,7 @@ func (r *router) mainLoop() { case <-ticker.C: { // Any periodic maintenance stuff goes here + r.core.switchTable.doMaintenance() r.core.dht.doMaintenance() util_getBytes() // To slowly drain things } diff --git a/src/yggdrasil/switch.go b/src/yggdrasil/switch.go index 8731e50..03921de 100644 --- a/src/yggdrasil/switch.go +++ b/src/yggdrasil/switch.go @@ -170,26 +170,13 @@ func (t *switchTable) init(core *Core, key sigPubKey) { t.drop = make(map[sigPubKey]int64) } -func (t *switchTable) start() error { - doTicker := func() { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for { - <-ticker.C - t.Tick() - } - } - go doTicker() - return nil -} - func (t *switchTable) getLocator() switchLocator { t.mutex.RLock() defer t.mutex.RUnlock() return t.data.locator.clone() } -func (t *switchTable) Tick() { +func (t *switchTable) doMaintenance() { // Periodic maintenance work to keep things internally consistent t.mutex.Lock() // Write lock defer t.mutex.Unlock() // Release lock when we're done