Skip to content

Commit

Permalink
Initialize agent.Self correctly, implementing ParsePeer and its depen…
Browse files Browse the repository at this point in the history
…dencies
  • Loading branch information
gdiazlo committed Nov 23, 2018
1 parent 88bab03 commit 7ec96fc
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 8 deletions.
1 change: 1 addition & 0 deletions gossip/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ func NewAgent(conf *Config, p []Processor) (agent *Agent, err error) {
// Configure delegates
conf.MemberlistConfig.Delegate = newAgentDelegate(agent)
conf.MemberlistConfig.Events = &eventDelegate{agent}
agent.Self = member.NewPeer(conf.NodeName, advertiseIP, uint16(advertisePort), conf.Role)

agent.memberlist, err = memberlist.Create(conf.MemberlistConfig)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions gossip/delegate.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ func (e *eventDelegate) NotifyJoin(n *memberlist.Node) {
peer := member.ParsePeer(n)
peer.Status = member.Alive
e.agent.Topology.Update(peer)
log.Debugf("%s member joined: %+v", peer)
log.Debugf("member joined: %+v ", peer)
}

// NotifyLeave is invoked when a node is detected to have left.
func (e *eventDelegate) NotifyLeave(n *memberlist.Node) {
peer := member.ParsePeer(n)
e.agent.Topology.Delete(peer)
log.Debugf("%s member left: %+v", peer)
log.Debugf("member left: %+v", peer)
}

// NotifyUpdate is invoked when a node is detected to have
Expand Down
19 changes: 15 additions & 4 deletions gossip/member/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ package member
import (
"net"

"github.com/bbva/qed/log"
"github.com/hashicorp/memberlist"
)

Expand Down Expand Up @@ -53,15 +54,15 @@ const (
Monitor
Publisher
Server
MaxType
Unknown
)

// Member is a single member of the gossip cluster.
type Peer struct {
Name string
Addr net.IP
Port uint16
Meta *Meta
Meta Meta
Status Status
}

Expand All @@ -74,7 +75,7 @@ func (p Peer) Node() *memberlist.Node {
}

func NewPeer(name, addr string, port uint16, role Type) *Peer {
meta := &Meta{
meta := Meta{
Role: role,
}

Expand All @@ -87,5 +88,15 @@ func NewPeer(name, addr string, port uint16, role Type) *Peer {
}

func ParsePeer(node *memberlist.Node) *Peer {
return nil
var meta Meta
err := meta.Decode(node.Meta)
if err != nil {
log.Errorf("Error parsing peer: unable to decode meta. %v", err)
}
return &Peer{
Name: node.Name,
Addr: node.Addr,
Port: node.Port,
Meta: meta,
}
}
4 changes: 2 additions & 2 deletions gossip/topology.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ type Topology struct {
}

func NewTopology() *Topology {
m := make([]PeerList, member.MaxType)
for i := member.Auditor; i < member.MaxType; i++ {
m := make([]PeerList, member.Unknown)
for i := member.Auditor; i < member.Unknown; i++ {
m[i] = PeerList{
L: make([]*member.Peer, 0),
}
Expand Down

0 comments on commit 7ec96fc

Please sign in to comment.