Move slice allocations in connection manager monitor loop (#340)
* Move slice allocations in connection manager monitor loop * move further out Co-authored-by: Miran Park <mpark@slack-corp.com>
This commit is contained in:
parent
384b1166ea
commit
672ce1f0a8
|
@ -141,14 +141,17 @@ func (n *connectionManager) Start() {
|
||||||
|
|
||||||
func (n *connectionManager) Run() {
|
func (n *connectionManager) Run() {
|
||||||
clockSource := time.Tick(500 * time.Millisecond)
|
clockSource := time.Tick(500 * time.Millisecond)
|
||||||
|
p := []byte("")
|
||||||
|
nb := make([]byte, 12, 12)
|
||||||
|
out := make([]byte, mtu)
|
||||||
|
|
||||||
for now := range clockSource {
|
for now := range clockSource {
|
||||||
n.HandleMonitorTick(now)
|
n.HandleMonitorTick(now, p, nb, out)
|
||||||
n.HandleDeletionTick(now)
|
n.HandleDeletionTick(now)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *connectionManager) HandleMonitorTick(now time.Time) {
|
func (n *connectionManager) HandleMonitorTick(now time.Time, p, nb, out []byte) {
|
||||||
n.TrafficTimer.advance(now)
|
n.TrafficTimer.advance(now)
|
||||||
for {
|
for {
|
||||||
ep := n.TrafficTimer.Purge()
|
ep := n.TrafficTimer.Purge()
|
||||||
|
@ -188,7 +191,7 @@ func (n *connectionManager) HandleMonitorTick(now time.Time) {
|
||||||
|
|
||||||
if hostinfo != nil && hostinfo.ConnectionState != nil {
|
if hostinfo != nil && hostinfo.ConnectionState != nil {
|
||||||
// Send a test packet to trigger an authenticated tunnel test, this should suss out any lingering tunnel issues
|
// Send a test packet to trigger an authenticated tunnel test, this should suss out any lingering tunnel issues
|
||||||
n.intf.SendMessageToVpnIp(test, testRequest, vpnIP, []byte(""), make([]byte, 12, 12), make([]byte, mtu))
|
n.intf.SendMessageToVpnIp(test, testRequest, vpnIP, p, nb, out)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
hostinfo.logger().Debugf("Hostinfo sadness: %s", IntIp(vpnIP))
|
hostinfo.logger().Debugf("Hostinfo sadness: %s", IntIp(vpnIP))
|
||||||
|
|
|
@ -42,7 +42,10 @@ func Test_NewConnectionManagerTest(t *testing.T) {
|
||||||
|
|
||||||
// Create manager
|
// Create manager
|
||||||
nc := newConnectionManager(ifce, 5, 10)
|
nc := newConnectionManager(ifce, 5, 10)
|
||||||
nc.HandleMonitorTick(now)
|
p := []byte("")
|
||||||
|
nb := make([]byte, 12, 12)
|
||||||
|
out := make([]byte, mtu)
|
||||||
|
nc.HandleMonitorTick(now, p, nb, out)
|
||||||
// Add an ip we have established a connection w/ to hostmap
|
// Add an ip we have established a connection w/ to hostmap
|
||||||
hostinfo := nc.hostMap.AddVpnIP(vpnIP)
|
hostinfo := nc.hostMap.AddVpnIP(vpnIP)
|
||||||
hostinfo.ConnectionState = &ConnectionState{
|
hostinfo.ConnectionState = &ConnectionState{
|
||||||
|
@ -57,18 +60,18 @@ func Test_NewConnectionManagerTest(t *testing.T) {
|
||||||
assert.Contains(t, nc.hostMap.Hosts, vpnIP)
|
assert.Contains(t, nc.hostMap.Hosts, vpnIP)
|
||||||
// Move ahead 5s. Nothing should happen
|
// Move ahead 5s. Nothing should happen
|
||||||
next_tick := now.Add(5 * time.Second)
|
next_tick := now.Add(5 * time.Second)
|
||||||
nc.HandleMonitorTick(next_tick)
|
nc.HandleMonitorTick(next_tick, p, nb, out)
|
||||||
nc.HandleDeletionTick(next_tick)
|
nc.HandleDeletionTick(next_tick)
|
||||||
// Move ahead 6s. We haven't heard back
|
// Move ahead 6s. We haven't heard back
|
||||||
next_tick = now.Add(6 * time.Second)
|
next_tick = now.Add(6 * time.Second)
|
||||||
nc.HandleMonitorTick(next_tick)
|
nc.HandleMonitorTick(next_tick, p, nb, out)
|
||||||
nc.HandleDeletionTick(next_tick)
|
nc.HandleDeletionTick(next_tick)
|
||||||
// This host should now be up for deletion
|
// This host should now be up for deletion
|
||||||
assert.Contains(t, nc.pendingDeletion, vpnIP)
|
assert.Contains(t, nc.pendingDeletion, vpnIP)
|
||||||
assert.Contains(t, nc.hostMap.Hosts, vpnIP)
|
assert.Contains(t, nc.hostMap.Hosts, vpnIP)
|
||||||
// Move ahead some more
|
// Move ahead some more
|
||||||
next_tick = now.Add(45 * time.Second)
|
next_tick = now.Add(45 * time.Second)
|
||||||
nc.HandleMonitorTick(next_tick)
|
nc.HandleMonitorTick(next_tick, p, nb, out)
|
||||||
nc.HandleDeletionTick(next_tick)
|
nc.HandleDeletionTick(next_tick)
|
||||||
// The host should be evicted
|
// The host should be evicted
|
||||||
assert.NotContains(t, nc.pendingDeletion, vpnIP)
|
assert.NotContains(t, nc.pendingDeletion, vpnIP)
|
||||||
|
@ -105,7 +108,10 @@ func Test_NewConnectionManagerTest2(t *testing.T) {
|
||||||
|
|
||||||
// Create manager
|
// Create manager
|
||||||
nc := newConnectionManager(ifce, 5, 10)
|
nc := newConnectionManager(ifce, 5, 10)
|
||||||
nc.HandleMonitorTick(now)
|
p := []byte("")
|
||||||
|
nb := make([]byte, 12, 12)
|
||||||
|
out := make([]byte, mtu)
|
||||||
|
nc.HandleMonitorTick(now, p, nb, out)
|
||||||
// Add an ip we have established a connection w/ to hostmap
|
// Add an ip we have established a connection w/ to hostmap
|
||||||
hostinfo := nc.hostMap.AddVpnIP(vpnIP)
|
hostinfo := nc.hostMap.AddVpnIP(vpnIP)
|
||||||
hostinfo.ConnectionState = &ConnectionState{
|
hostinfo.ConnectionState = &ConnectionState{
|
||||||
|
@ -120,11 +126,11 @@ func Test_NewConnectionManagerTest2(t *testing.T) {
|
||||||
assert.Contains(t, nc.hostMap.Hosts, vpnIP)
|
assert.Contains(t, nc.hostMap.Hosts, vpnIP)
|
||||||
// Move ahead 5s. Nothing should happen
|
// Move ahead 5s. Nothing should happen
|
||||||
next_tick := now.Add(5 * time.Second)
|
next_tick := now.Add(5 * time.Second)
|
||||||
nc.HandleMonitorTick(next_tick)
|
nc.HandleMonitorTick(next_tick, p, nb, out)
|
||||||
nc.HandleDeletionTick(next_tick)
|
nc.HandleDeletionTick(next_tick)
|
||||||
// Move ahead 6s. We haven't heard back
|
// Move ahead 6s. We haven't heard back
|
||||||
next_tick = now.Add(6 * time.Second)
|
next_tick = now.Add(6 * time.Second)
|
||||||
nc.HandleMonitorTick(next_tick)
|
nc.HandleMonitorTick(next_tick, p, nb, out)
|
||||||
nc.HandleDeletionTick(next_tick)
|
nc.HandleDeletionTick(next_tick)
|
||||||
// This host should now be up for deletion
|
// This host should now be up for deletion
|
||||||
assert.Contains(t, nc.pendingDeletion, vpnIP)
|
assert.Contains(t, nc.pendingDeletion, vpnIP)
|
||||||
|
@ -133,7 +139,7 @@ func Test_NewConnectionManagerTest2(t *testing.T) {
|
||||||
nc.In(vpnIP)
|
nc.In(vpnIP)
|
||||||
// Move ahead some more
|
// Move ahead some more
|
||||||
next_tick = now.Add(45 * time.Second)
|
next_tick = now.Add(45 * time.Second)
|
||||||
nc.HandleMonitorTick(next_tick)
|
nc.HandleMonitorTick(next_tick, p, nb, out)
|
||||||
nc.HandleDeletionTick(next_tick)
|
nc.HandleDeletionTick(next_tick)
|
||||||
// The host should be evicted
|
// The host should be evicted
|
||||||
assert.NotContains(t, nc.pendingDeletion, vpnIP)
|
assert.NotContains(t, nc.pendingDeletion, vpnIP)
|
||||||
|
|
Loading…
Reference in New Issue