forked from TrueCloudLab/frostfs-node
[#1538] node: Assume notary is enabled
Notaryless environments are not tested at all since a while. We use neo-go only and it has notary contract enabled. Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
2d5d4093be
commit
5c3b2d95ba
4 changed files with 17 additions and 59 deletions
|
@ -591,8 +591,6 @@ type cfgMorph struct {
|
||||||
|
|
||||||
client *client.Client
|
client *client.Client
|
||||||
|
|
||||||
notaryEnabled bool
|
|
||||||
|
|
||||||
// TTL of Sidechain cached values. Non-positive value disables caching.
|
// TTL of Sidechain cached values. Non-positive value disables caching.
|
||||||
cacheTTL time.Duration
|
cacheTTL time.Duration
|
||||||
|
|
||||||
|
|
|
@ -35,18 +35,14 @@ func (c *cfg) initMorphComponents(ctx context.Context) {
|
||||||
|
|
||||||
lookupScriptHashesInNNS(c) // smart contract auto negotiation
|
lookupScriptHashesInNNS(c) // smart contract auto negotiation
|
||||||
|
|
||||||
if c.cfgMorph.notaryEnabled {
|
err := c.cfgMorph.client.EnableNotarySupport(
|
||||||
err := c.cfgMorph.client.EnableNotarySupport(
|
client.WithProxyContract(
|
||||||
client.WithProxyContract(
|
c.cfgMorph.proxyScriptHash,
|
||||||
c.cfgMorph.proxyScriptHash,
|
),
|
||||||
),
|
|
||||||
)
|
|
||||||
fatalOnErr(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.log.Info(ctx, logs.FrostFSNodeNotarySupport,
|
|
||||||
zap.Bool("sidechain_enabled", c.cfgMorph.notaryEnabled),
|
|
||||||
)
|
)
|
||||||
|
fatalOnErr(err)
|
||||||
|
|
||||||
|
c.log.Info(ctx, logs.FrostFSNodeNotarySupport)
|
||||||
|
|
||||||
wrap, err := nmClient.NewFromMorph(c.cfgMorph.client, c.cfgNetmap.scriptHash, 0, nmClient.TryNotary())
|
wrap, err := nmClient.NewFromMorph(c.cfgMorph.client, c.cfgNetmap.scriptHash, 0, nmClient.TryNotary())
|
||||||
fatalOnErr(err)
|
fatalOnErr(err)
|
||||||
|
@ -116,15 +112,9 @@ func initMorphClient(ctx context.Context, c *cfg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
c.cfgMorph.client = cli
|
c.cfgMorph.client = cli
|
||||||
c.cfgMorph.notaryEnabled = cli.ProbeNotary()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeAndWaitNotaryDeposit(ctx context.Context, c *cfg) {
|
func makeAndWaitNotaryDeposit(ctx context.Context, c *cfg) {
|
||||||
// skip notary deposit in non-notary environments
|
|
||||||
if !c.cfgMorph.notaryEnabled {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
tx, vub, err := makeNotaryDeposit(ctx, c)
|
tx, vub, err := makeNotaryDeposit(ctx, c)
|
||||||
fatalOnErr(err)
|
fatalOnErr(err)
|
||||||
|
|
||||||
|
@ -282,10 +272,6 @@ func lookupScriptHashesInNNS(c *cfg) {
|
||||||
)
|
)
|
||||||
|
|
||||||
for _, t := range targets {
|
for _, t := range targets {
|
||||||
if t.nnsName == client.NNSProxyContractName && !c.cfgMorph.notaryEnabled {
|
|
||||||
continue // ignore proxy contract if notary disabled
|
|
||||||
}
|
|
||||||
|
|
||||||
if emptyHash.Equals(*t.h) {
|
if emptyHash.Equals(*t.h) {
|
||||||
*t.h, err = c.cfgMorph.client.NNSContractAddress(t.nnsName)
|
*t.h, err = c.cfgMorph.client.NNSContractAddress(t.nnsName)
|
||||||
fatalOnErrDetails(fmt.Sprintf("can't resolve %s in NNS", t.nnsName), err)
|
fatalOnErrDetails(fmt.Sprintf("can't resolve %s in NNS", t.nnsName), err)
|
||||||
|
|
|
@ -193,16 +193,14 @@ func addNewEpochNotificationHandlers(c *cfg) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if c.cfgMorph.notaryEnabled {
|
addNewEpochAsyncNotificationHandler(c, func(ctx context.Context, _ event.Event) {
|
||||||
addNewEpochAsyncNotificationHandler(c, func(ctx context.Context, _ event.Event) {
|
_, _, err := makeNotaryDeposit(ctx, c)
|
||||||
_, _, err := makeNotaryDeposit(ctx, c)
|
if err != nil {
|
||||||
if err != nil {
|
c.log.Error(ctx, logs.FrostFSNodeCouldNotMakeNotaryDeposit,
|
||||||
c.log.Error(ctx, logs.FrostFSNodeCouldNotMakeNotaryDeposit,
|
zap.String("error", err.Error()),
|
||||||
zap.String("error", err.Error()),
|
)
|
||||||
)
|
}
|
||||||
}
|
})
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// bootstrapNode adds current node to the Network map.
|
// bootstrapNode adds current node to the Network map.
|
||||||
|
|
|
@ -13,7 +13,6 @@ import (
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/netmap"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/netmap"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/engine"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/engine"
|
||||||
morphClient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client"
|
morphClient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client"
|
||||||
nmClient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network/cache"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network/cache"
|
||||||
objectTransportGRPC "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network/transport/object/grpc"
|
objectTransportGRPC "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network/transport/object/grpc"
|
||||||
objectService "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object"
|
objectService "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object"
|
||||||
|
@ -137,24 +136,6 @@ func (fn *innerRingFetcherWithNotary) InnerRingKeys() ([][]byte, error) {
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type innerRingFetcherWithoutNotary struct {
|
|
||||||
nm *nmClient.Client
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *innerRingFetcherWithoutNotary) InnerRingKeys() ([][]byte, error) {
|
|
||||||
keys, err := f.nm.GetInnerRingList()
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("can't get inner ring keys from netmap contract: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
result := make([][]byte, 0, len(keys))
|
|
||||||
for i := range keys {
|
|
||||||
result = append(result, keys[i].Bytes())
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func initObjectService(c *cfg) {
|
func initObjectService(c *cfg) {
|
||||||
keyStorage := util.NewKeyStorage(&c.key.PrivateKey, c.privateTokenStore, c.cfgNetmap.state)
|
keyStorage := util.NewKeyStorage(&c.key.PrivateKey, c.privateTokenStore, c.cfgNetmap.state)
|
||||||
|
|
||||||
|
@ -305,13 +286,8 @@ func addPolicer(c *cfg, keyStorage *util.KeyStorage, clientConstructor *cache.Cl
|
||||||
}
|
}
|
||||||
|
|
||||||
func createInnerRingFetcher(c *cfg) v2.InnerRingFetcher {
|
func createInnerRingFetcher(c *cfg) v2.InnerRingFetcher {
|
||||||
if c.cfgMorph.client.ProbeNotary() {
|
return &innerRingFetcherWithNotary{
|
||||||
return &innerRingFetcherWithNotary{
|
sidechain: c.cfgMorph.client,
|
||||||
sidechain: c.cfgMorph.client,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return &innerRingFetcherWithoutNotary{
|
|
||||||
nm: c.cfgNetmap.wrapper,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue