mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-19 19:41:00 -05:00
add version to key
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
This commit is contained in:
@@ -95,7 +95,7 @@ func (n *storeregistry) Register(s *registry.Service, opts ...registry.RegisterO
|
||||
return err
|
||||
}
|
||||
return n.store.Write(&store.Record{
|
||||
Key: s.Name + _serviceDelimiter + server.DefaultId,
|
||||
Key: s.Name + _serviceDelimiter + server.DefaultId + _serviceDelimiter + s.Version,
|
||||
Value: b,
|
||||
Expiry: options.TTL,
|
||||
})
|
||||
@@ -105,7 +105,7 @@ func (n *storeregistry) Register(s *registry.Service, opts ...registry.RegisterO
|
||||
func (n *storeregistry) Deregister(s *registry.Service, _ ...registry.DeregisterOption) error {
|
||||
n.lock.RLock()
|
||||
defer n.lock.RUnlock()
|
||||
return n.store.Delete(s.Name + _serviceDelimiter + server.DefaultId)
|
||||
return n.store.Delete(s.Name + _serviceDelimiter + server.DefaultId + _serviceDelimiter + s.Version)
|
||||
}
|
||||
|
||||
// GetService gets a specific service from the registry
|
||||
|
||||
@@ -3,6 +3,7 @@ package natsjsregistry
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
natsjskv "github.com/go-micro/plugins/v4/store/nats-js-kv"
|
||||
"github.com/nats-io/nats.go"
|
||||
@@ -48,9 +49,21 @@ func (w *Watcher) Next() (*registry.Result, error) {
|
||||
}
|
||||
|
||||
var svc registry.Service
|
||||
if err := json.Unmarshal(kve.Value.Data, &svc); err != nil {
|
||||
_ = w.stop()
|
||||
return nil, err
|
||||
if kve.Value.Data == nil {
|
||||
// fake a service
|
||||
parts := strings.SplitN(kve.Value.Key, _serviceDelimiter, 3)
|
||||
if len(parts) != 3 {
|
||||
return nil, errors.New("invalid service key")
|
||||
}
|
||||
svc.Name = parts[0]
|
||||
// ocis registers nodes with a - seperator
|
||||
svc.Nodes = []*registry.Node{{Id: parts[0] + "-" + parts[1]}}
|
||||
svc.Version = parts[2]
|
||||
} else {
|
||||
if err := json.Unmarshal(kve.Value.Data, &svc); err != nil {
|
||||
_ = w.stop()
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return ®istry.Result{
|
||||
|
||||
Reference in New Issue
Block a user