extended internal tracing for multiple objects, not just score

This commit is contained in:
vyzo 2020-05-07 20:58:44 +03:00
parent 076c6c1ab5
commit d3ae6ab3a7
3 changed files with 36 additions and 28 deletions

View File

@ -149,9 +149,9 @@ func WithPeerScore(params *PeerScoreParams, thresholds *PeerScoreThresholds) Opt
// hook the tracer // hook the tracer
if ps.tracer != nil { if ps.tracer != nil {
ps.tracer.score = gs.score ps.tracer.internal = append(ps.tracer.internal, gs.score)
} else { } else {
ps.tracer = &pubsubTracer{score: gs.score, pid: ps.host.ID(), msgID: ps.msgID} ps.tracer = &pubsubTracer{internal: []internalTracer{gs.score}, pid: ps.host.ID(), msgID: ps.msgID}
} }
return nil return nil

View File

@ -81,7 +81,7 @@ type peerScore struct {
inspectPeriod time.Duration inspectPeriod time.Duration
} }
var _ scoreTracer = (*peerScore)(nil) var _ internalTracer = (*peerScore)(nil)
type messageDeliveries struct { type messageDeliveries struct {
records map[string]*deliveryRecord records map[string]*deliveryRecord

View File

@ -15,7 +15,7 @@ type EventTracer interface {
} }
// internal interface for score tracing // internal interface for score tracing
type scoreTracer interface { type internalTracer interface {
AddPeer(p peer.ID, proto protocol.ID) AddPeer(p peer.ID, proto protocol.ID)
RemovePeer(p peer.ID) RemovePeer(p peer.ID)
Join(topic string) Join(topic string)
@ -30,10 +30,10 @@ type scoreTracer interface {
// pubsub tracer details // pubsub tracer details
type pubsubTracer struct { type pubsubTracer struct {
tracer EventTracer tracer EventTracer
score scoreTracer internal []internalTracer
pid peer.ID pid peer.ID
msgID MsgIdFunction msgID MsgIdFunction
} }
func (t *pubsubTracer) PublishMessage(msg *Message) { func (t *pubsubTracer) PublishMessage(msg *Message) {
@ -64,8 +64,10 @@ func (t *pubsubTracer) ValidateMessage(msg *Message) {
return return
} }
if t.score != nil && msg.ReceivedFrom != t.pid { if msg.ReceivedFrom != t.pid {
t.score.ValidateMessage(msg) for _, tr := range t.internal {
tr.ValidateMessage(msg)
}
} }
} }
@ -74,8 +76,10 @@ func (t *pubsubTracer) RejectMessage(msg *Message, reason string) {
return return
} }
if t.score != nil && msg.ReceivedFrom != t.pid { if msg.ReceivedFrom != t.pid {
t.score.RejectMessage(msg, reason) for _, tr := range t.internal {
tr.RejectMessage(msg, reason)
}
} }
if t.tracer == nil { if t.tracer == nil {
@ -102,8 +106,10 @@ func (t *pubsubTracer) DuplicateMessage(msg *Message) {
return return
} }
if t.score != nil && msg.ReceivedFrom != t.pid { if msg.ReceivedFrom != t.pid {
t.score.DuplicateMessage(msg) for _, tr := range t.internal {
tr.DuplicateMessage(msg)
}
} }
if t.tracer == nil { if t.tracer == nil {
@ -129,8 +135,10 @@ func (t *pubsubTracer) DeliverMessage(msg *Message) {
return return
} }
if t.score != nil && msg.ReceivedFrom != t.pid { if msg.ReceivedFrom != t.pid {
t.score.DeliverMessage(msg) for _, tr := range t.internal {
tr.DeliverMessage(msg)
}
} }
if t.tracer == nil { if t.tracer == nil {
@ -155,8 +163,8 @@ func (t *pubsubTracer) AddPeer(p peer.ID, proto protocol.ID) {
return return
} }
if t.score != nil { for _, tr := range t.internal {
t.score.AddPeer(p, proto) tr.AddPeer(p, proto)
} }
if t.tracer == nil { if t.tracer == nil {
@ -183,8 +191,8 @@ func (t *pubsubTracer) RemovePeer(p peer.ID) {
return return
} }
if t.score != nil { for _, tr := range t.internal {
t.score.RemovePeer(p) tr.RemovePeer(p)
} }
if t.tracer == nil { if t.tracer == nil {
@ -353,8 +361,8 @@ func (t *pubsubTracer) Join(topic string) {
return return
} }
if t.score != nil { for _, tr := range t.internal {
t.score.Join(topic) tr.Join(topic)
} }
if t.tracer == nil { if t.tracer == nil {
@ -379,8 +387,8 @@ func (t *pubsubTracer) Leave(topic string) {
return return
} }
if t.score != nil { for _, tr := range t.internal {
t.score.Leave(topic) tr.Leave(topic)
} }
if t.tracer == nil { if t.tracer == nil {
@ -405,8 +413,8 @@ func (t *pubsubTracer) Graft(p peer.ID, topic string) {
return return
} }
if t.score != nil { for _, tr := range t.internal {
t.score.Graft(p, topic) tr.Graft(p, topic)
} }
if t.tracer == nil { if t.tracer == nil {
@ -432,8 +440,8 @@ func (t *pubsubTracer) Prune(p peer.ID, topic string) {
return return
} }
if t.score != nil { for _, tr := range t.internal {
t.score.Prune(p, topic) tr.Prune(p, topic)
} }
if t.tracer == nil { if t.tracer == nil {