diff --git a/common/docker/client.go b/common/docker/client.go index 6774c213d6..1f2ee0df56 100644 --- a/common/docker/client.go +++ b/common/docker/client.go @@ -7,7 +7,7 @@ import ( // An observer for container events type ContainerObserver interface { - ContainerDied(ident string) error + ContainerDied(ident string) } type Client struct { diff --git a/ipam/allocator.go b/ipam/allocator.go index 3b6fdf7d19..362d3d64d1 100644 --- a/ipam/allocator.go +++ b/ipam/allocator.go @@ -223,12 +223,11 @@ func (alloc *Allocator) Claim(ident string, addr address.Address) error { } // ContainerDied is provided to satisfy the updater interface; does a 'Delete' underneath. Sync. -func (alloc *Allocator) ContainerDied(ident string) error { - err := alloc.Delete(ident) - if err == nil { - alloc.debugln("Container", ident, "died; released addresses") +func (alloc *Allocator) ContainerDied(ident string) { + alloc.debugln("Container", ident, "died; released addresses") + if err := alloc.Delete(ident); err != nil { + alloc.errorf("Container %s died; failed to released addresses: %v", ident, err) } - return err } // Delete (Sync) - release all IP addresses for container with given name @@ -760,6 +759,9 @@ func (alloc *Allocator) findOwner(addr address.Address) string { // Logging +func (alloc *Allocator) errorf(fmt string, args ...interface{}) { + common.Log.Errorf("[allocator %s] "+fmt, append([]interface{}{alloc.ourName}, args...)...) +} func (alloc *Allocator) infof(fmt string, args ...interface{}) { common.Log.Infof("[allocator %s] "+fmt, append([]interface{}{alloc.ourName}, args...)...) } diff --git a/nameserver/nameserver.go b/nameserver/nameserver.go index c6822bec79..d8a2cf1294 100644 --- a/nameserver/nameserver.go +++ b/nameserver/nameserver.go @@ -120,7 +120,7 @@ func (n *Nameserver) ReverseLookup(ip address.Address) (string, error) { return match.Hostname, nil } -func (n *Nameserver) ContainerDied(ident string) error { +func (n *Nameserver) ContainerDied(ident string) { n.Lock() entries := n.entries.tombstone(n.ourName, func(e *Entry) bool { if e.ContainerID == ident { @@ -131,9 +131,11 @@ func (n *Nameserver) ContainerDied(ident string) error { }) n.Unlock() if n.gossip != nil { - return n.gossip.GossipBroadcast(entries) + err := n.gossip.GossipBroadcast(entries) + if err != nil { + n.errorf("Failed to broadcase container death: %v", err) + } } - return nil } func (n *Nameserver) PeerGone(peer *router.Peer) { @@ -253,3 +255,6 @@ func (n *Nameserver) infof(fmt string, args ...interface{}) { func (n *Nameserver) debugf(fmt string, args ...interface{}) { Log.Debugf("[nameserver %s] "+fmt, append([]interface{}{n.ourName}, args...)...) } +func (n *Nameserver) errorf(fmt string, args ...interface{}) { + Log.Errorf("[nameserver %s] "+fmt, append([]interface{}{n.ourName}, args...)...) +} diff --git a/nameserver/nameserver_test.go b/nameserver/nameserver_test.go index f1b091fe63..442f91a60c 100644 --- a/nameserver/nameserver_test.go +++ b/nameserver/nameserver_test.go @@ -205,8 +205,7 @@ func TestContainerAndPeerDeath(t *testing.T) { require.Nil(t, err) require.Equal(t, []address.Address{0}, nameserver.Lookup("hostname")) - err = nameserver.ContainerDied("containerid") - require.Nil(t, err) + nameserver.ContainerDied("containerid") require.Equal(t, []address.Address{}, nameserver.Lookup("hostname")) err = nameserver.AddEntry("hostname", "containerid", peername, address.Address(0))