diff --git a/profile/profile-layered-provider.go b/profile/profile-layered-provider.go index 1793cb9c..9a5b6e77 100644 --- a/profile/profile-layered-provider.go +++ b/profile/profile-layered-provider.go @@ -14,16 +14,24 @@ const ( ) var ( - errProfileNotActive = errors.New("profile not active") - errNoLayeredProfile = errors.New("profile has no layered profile") + errProfileNotActive = errors.New("profile not active") + errNoLayeredProfile = errors.New("profile has no layered profile") + pushLayeredProfile runtime.PushFunc = func(...record.Record) {} ) func registerRevisionProvider() error { - _, err := runtime.Register( + push, err := runtime.Register( revisionProviderPrefix, runtime.SimpleValueGetterFunc(getRevisions), ) - return err + + if err != nil { + return err + } + + pushLayeredProfile = push + + return nil } func getRevisions(key string) ([]record.Record, error) { diff --git a/profile/profile-layered.go b/profile/profile-layered.go index 057c6b97..65191796 100644 --- a/profile/profile-layered.go +++ b/profile/profile-layered.go @@ -127,6 +127,12 @@ func NewLayeredProfile(localProfile *Profile) *LayeredProfile { new.CreateMeta() new.SetKey(runtime.DefaultRegistry.DatabaseName() + ":" + revisionProviderPrefix + localProfile.ID) + // Inform database subscribers about the new layered profile. + new.Lock() + defer new.Unlock() + + pushLayeredProfile(new) + return new } @@ -231,6 +237,8 @@ func (lp *LayeredProfile) Update() (revisionCounter uint64) { // bump revision counter lp.RevisionCounter++ + + pushLayeredProfile(lp) } return lp.RevisionCounter