forked from TrueCloudLab/frostfs-node
[#249] node: Drop subnet from IR and morph
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
d757d881d0
commit
f07d4158f5
41 changed files with 55 additions and 1935 deletions
|
@ -1,15 +1,12 @@
|
|||
package netmap
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/hex"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"
|
||||
netmapclient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
||||
netmapEvent "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/event/netmap"
|
||||
subnetEvent "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/event/subnet"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap"
|
||||
subnetid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/subnet/id"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
|
@ -139,74 +136,3 @@ func (np *Processor) processUpdatePeer(ev netmapEvent.UpdatePeer) {
|
|||
np.log.Error(logs.NetmapCantInvokeNetmapUpdatePeer, zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
func (np *Processor) processRemoveSubnetNode(ev subnetEvent.RemoveNode) {
|
||||
if !np.alphabetState.IsAlphabet() {
|
||||
np.log.Info(logs.NetmapNonAlphabetModeIgnoreRemoveNodeFromSubnetNotification)
|
||||
return
|
||||
}
|
||||
|
||||
candidates, err := np.netmapClient.GetCandidates()
|
||||
if err != nil {
|
||||
np.log.Warn(logs.NetmapCouldNotGetNetworkMapCandidates,
|
||||
zap.Error(err),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
rawSubnet := ev.SubnetworkID()
|
||||
var subnetToRemoveFrom subnetid.ID
|
||||
|
||||
err = subnetToRemoveFrom.Unmarshal(rawSubnet)
|
||||
if err != nil {
|
||||
np.log.Warn(logs.NetmapCouldNotUnmarshalSubnetID,
|
||||
zap.Error(err),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
if subnetid.IsZero(subnetToRemoveFrom) {
|
||||
np.log.Warn(logs.NetmapGotZeroSubnetInRemoveNodeNotification)
|
||||
return
|
||||
}
|
||||
|
||||
for i := range candidates {
|
||||
if !bytes.Equal(candidates[i].PublicKey(), ev.Node()) {
|
||||
continue
|
||||
}
|
||||
|
||||
err = candidates[i].IterateSubnets(func(subNetID subnetid.ID) error {
|
||||
if subNetID.Equals(subnetToRemoveFrom) {
|
||||
return netmap.ErrRemoveSubnet
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
np.log.Warn(logs.NetmapCouldNotIterateOverSubnetworksOfTheNode, zap.Error(err))
|
||||
np.log.Info(logs.NetmapVoteToRemoveNodeFromNetmap, zap.String("key", hex.EncodeToString(ev.Node())))
|
||||
|
||||
prm := netmapclient.UpdatePeerPrm{}
|
||||
prm.SetKey(ev.Node())
|
||||
prm.SetHash(ev.TxHash())
|
||||
|
||||
err = np.netmapClient.UpdatePeerState(prm)
|
||||
if err != nil {
|
||||
np.log.Error(logs.NetmapCouldNotInvokeNetmapUpdateState, zap.Error(err))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
prm := netmapclient.AddPeerPrm{}
|
||||
prm.SetNodeInfo(candidates[i])
|
||||
prm.SetHash(ev.TxHash())
|
||||
|
||||
err = np.netmapClient.AddPeer(prm)
|
||||
if err != nil {
|
||||
np.log.Error(logs.NetmapCouldNotInvokeNetmapAddPeer, zap.Error(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue