Etcd router bug fixing etcd path prefix matching name (#1899)

* add logging and don't get nodes where they exist in router

* add more logging

* Fix the etcd bug for name matching of keys and prefixes matching names
This commit is contained in:
Asim Aslam
2020-08-06 12:42:14 +01:00
committed by Vasiliy Tolstov
parent bb40377f76
commit 54fbb14f18
2 changed files with 6 additions and 5 deletions

View File

@@ -245,21 +245,21 @@ func (t *table) Query(q ...router.QueryOption) ([]router.Route, error) {
}
// readAndFilter routes for this service under read lock.
readAndFilter := func() ([]router.Route, bool) {
readAndFilter := func(q router.QueryOptions) ([]router.Route, bool) {
t.RLock()
defer t.RUnlock()
routes, ok := t.routes[opts.Service]
routes, ok := t.routes[q.Service]
if !ok || len(routes) == 0 {
return nil, false
}
return findRoutes(routes, opts.Address, opts.Gateway, opts.Network, opts.Router, opts.Strategy), true
return findRoutes(routes, q.Address, q.Gateway, q.Network, q.Router, q.Strategy), true
}
if opts.Service != "*" {
// try and load services from the cache
if routes, ok := readAndFilter(); ok {
if routes, ok := readAndFilter(opts); ok {
return routes, nil
}
@@ -269,7 +269,7 @@ func (t *table) Query(q ...router.QueryOption) ([]router.Route, error) {
}
// try again
if routes, ok := readAndFilter(); ok {
if routes, ok := readAndFilter(opts); ok {
return routes, nil
}