Skip to content

Commit

Permalink
[#872] services/container: Ignore passed routes in load router
Browse files Browse the repository at this point in the history
Higher level solution for original issue with lost announcements
from single node container.

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
  • Loading branch information
alexvanin committed Oct 5, 2021
1 parent f08636c commit e41e74b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
17 changes: 16 additions & 1 deletion cmd/neofs-node/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,16 @@ func (*morphLoadWriter) Close() error {
return nil
}

type nopLoadWriter struct{}

func (nopLoadWriter) Put(containerSDK.UsedSpaceAnnouncement) error {
return nil
}

func (nopLoadWriter) Close() error {
return nil
}

type remoteLoadAnnounceProvider struct {
key *ecdsa.PrivateKey

Expand All @@ -241,10 +251,15 @@ type remoteLoadAnnounceProvider struct {
}

func (r *remoteLoadAnnounceProvider) InitRemote(srv loadroute.ServerInfo) (loadcontroller.WriterProvider, error) {
if srv == nil || r.netmapKeys.IsLocalKey(srv.PublicKey()) {
if srv == nil {
return r.deadEndProvider, nil
}

if r.netmapKeys.IsLocalKey(srv.PublicKey()) {
// if local => return no-op writer
return loadcontroller.SimpleWriterProvider(new(nopLoadWriter)), nil
}

var info client.NodeInfo

err := client.NodeInfoFromRawNetmapElement(&info, srv)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package placementrouter

import (
"bytes"
"fmt"

"github.com/nspcc-dev/neofs-api-go/pkg/container"
Expand Down Expand Up @@ -30,7 +31,15 @@ func (b *Builder) NextStage(a container.UsedSpaceAnnouncement, passed []loadrout
continue
}

res = append(res, placement[i][0])
target := placement[i][0]

if len(passed) == 1 && bytes.Equal(passed[0].PublicKey(), target.PublicKey()) {
// add nil element so the announcement will be saved in local memory
res = append(res, nil)
} else {
// add element with remote node to send announcement to
res = append(res, target)
}
}

return res, nil
Expand Down

0 comments on commit e41e74b

Please sign in to comment.