VOL-1687 : Fix wrong in-memory node assignments
- Fixed nil pointer with createProxy
- Changed watch loop to avoid re-starting when rev changes
Change-Id: Ie821788f2422d7a2083398c65b9632c65fae001d
diff --git a/db/model/root.go b/db/model/root.go
index 338ef67..5036ce1 100644
--- a/db/model/root.go
+++ b/db/model/root.go
@@ -91,7 +91,7 @@
dirtyNode.DeleteBranch(txid)
}
delete(r.DirtyNodes, txid)
- delete(r.node.Branches, txid)
+ r.node.DeleteBranch(txid)
}
// FoldTxBranch will merge the contents of a transaction branch with the root object
@@ -111,9 +111,8 @@
// ExecuteCallbacks will invoke all the callbacks linked to root object
func (r *root) ExecuteCallbacks() {
r.mutex.Lock()
- log.Debugf("ExecuteCallbacks has the ROOT lock : %+v", r)
defer r.mutex.Unlock()
- defer log.Debugf("ExecuteCallbacks released the ROOT lock : %+v", r)
+
for len(r.Callbacks) > 0 {
callback := r.Callbacks[0]
r.Callbacks = r.Callbacks[1:]
@@ -133,36 +132,32 @@
// getCallbacks returns the available callbacks
func (r *root) GetCallbacks() []CallbackTuple {
r.mutex.Lock()
- log.Debugf("getCallbacks has the ROOT lock : %+v", r)
defer r.mutex.Unlock()
- defer log.Debugf("getCallbacks released the ROOT lock : %+v", r)
+
return r.Callbacks
}
// getCallbacks returns the available notification callbacks
func (r *root) GetNotificationCallbacks() []CallbackTuple {
r.mutex.Lock()
- log.Debugf("GetNotificationCallbacks has the ROOT lock : %+v", r)
defer r.mutex.Unlock()
- defer log.Debugf("GetNotificationCallbacks released the ROOT lock : %+v", r)
+
return r.NotificationCallbacks
}
// AddCallback inserts a new callback with its arguments
func (r *root) AddCallback(callback CallbackFunction, args ...interface{}) {
r.mutex.Lock()
- log.Debugf("AddCallback has the ROOT lock : %+v", r)
defer r.mutex.Unlock()
- defer log.Debugf("AddCallback released the ROOT lock : %+v", r)
+
r.Callbacks = append(r.Callbacks, CallbackTuple{callback, args})
}
// AddNotificationCallback inserts a new notification callback with its arguments
func (r *root) AddNotificationCallback(callback CallbackFunction, args ...interface{}) {
r.mutex.Lock()
- log.Debugf("AddNotificationCallback has the ROOT lock : %+v", r)
defer r.mutex.Unlock()
- defer log.Debugf("AddNotificationCallback released the ROOT lock : %+v", r)
+
r.NotificationCallbacks = append(r.NotificationCallbacks, CallbackTuple{callback, args})
}