VOL-1283: Fixed callback execution consistency for all proxy levels
- Callbacks are executed at any proxy levels
- Uncovered some issues with the base children fields structure
- cleaned up the root/node structures
- Ensure that a get command returns a clone.
Change-Id: Ic2cd5420c29332bd9b5d6f303a7fd9d0d0ccaf06
diff --git a/db/model/event_bus.go b/db/model/event_bus.go
index c4dfbdc..aaeb7ac 100644
--- a/db/model/event_bus.go
+++ b/db/model/event_bus.go
@@ -17,6 +17,7 @@
import (
"encoding/json"
+ "github.com/golang/protobuf/proto"
"github.com/opencord/voltha-go/common/log"
"github.com/opencord/voltha-go/protos/voltha"
)
@@ -47,11 +48,11 @@
//func (bus *EventBus) Advertise(eventType CallbackType, data interface{}, hash string) {
func (bus *EventBus) Advertise(args ...interface{}) interface{} {
eventType := args[0].(CallbackType)
- data := args[1]
- hash := args[2].(string)
+ hash := args[1].(string)
+ data := args[2:]
if _, ok := IGNORED_CALLBACKS[eventType]; ok {
- log.Debugf("ignoring event - type:%s, data:%+v\n", eventType, data)
+ log.Debugf("ignoring event - type:%s, data:%+v", eventType, data)
}
var kind voltha.ConfigEventType_ConfigEventType
switch eventType {
@@ -66,11 +67,15 @@
var msg []byte
var err error
if IsProtoMessage(data) {
- if msg, err = json.Marshal(data); err != nil {
- log.Errorf("problem marshalling data: %+v, err:%s\n", data, err.Error())
+ if msg, err = proto.Marshal(data[0].(proto.Message)); err != nil {
+ log.Errorf("problem marshalling proto data: %+v, err:%s", data[0], err.Error())
+ }
+ } else if data[0] != nil {
+ if msg, err = json.Marshal(data[0]); err != nil {
+ log.Errorf("problem marshalling json data: %+v, err:%s", data[0], err.Error())
}
} else {
- msg = data.([]byte)
+ log.Errorf("no data to advertise : %+v", data[0])
}
event := voltha.ConfigEvent{