From 9ad84281c1dd913ad00d3a48ab57c864a0a63543 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 15:31:06 +0300 Subject: [PATCH 1/9] *: fix QF1001 lint issue Could apply De Morgan's law. Signed-off-by: Andrey Butusov --- pkg/morph/event/notary_preparator.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/morph/event/notary_preparator.go b/pkg/morph/event/notary_preparator.go index 89e8f74d02..325ecb1b58 100644 --- a/pkg/morph/event/notary_preparator.go +++ b/pkg/morph/event/notary_preparator.go @@ -406,8 +406,8 @@ func (p preparator) validateWitnesses(w []transaction.Witness, alphaKeys keys.Pu // the last one must be a placeholder for notary contract witness last := len(w) - 1 - if !(len(w[last].InvocationScript) == 0 || // https://github.com/nspcc-dev/neo-go/pull/2981 - bytes.Equal(w[last].InvocationScript, p.dummyInvocationScript)) || // compatibility with old version + if len(w[last].InvocationScript) != 0 && // https://github.com/nspcc-dev/neo-go/pull/2981 + !bytes.Equal(w[last].InvocationScript, p.dummyInvocationScript) || // compatibility with old version len(w[last].VerificationScript) != 0 { return errIncorrectNotaryPlaceholder } From b0a5c55fc59f354cad7f9f8ee25be4041817112b Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 15:34:40 +0300 Subject: [PATCH 2/9] *: fix QF1002 lint issue Use the if statement instead of switch. Signed-off-by: Andrey Butusov --- pkg/services/object/delete/exec.go | 22 +++++---- pkg/services/object/get/exec.go | 52 +++++++++------------- pkg/services/object/search/exec.go | 9 ++-- pkg/services/reputation/common/managers.go | 3 +- 4 files changed, 37 insertions(+), 49 deletions(-) diff --git a/pkg/services/object/delete/exec.go b/pkg/services/object/delete/exec.go index 160c1320ec..c8ab5a1064 100644 --- a/pkg/services/object/delete/exec.go +++ b/pkg/services/object/delete/exec.go @@ -75,23 +75,21 @@ func (exec *execCtx) newAddress(id oid.ID) oid.Address { func (exec *execCtx) saveTombstone() bool { id, err := exec.svc.placer.put(exec) - switch { - default: - exec.status = statusUndefined - exec.err = err - - exec.log.Debug("could not save the tombstone", - zap.Error(err), - ) - - return false - case err == nil: + if err == nil { exec.status = statusOK exec.err = nil exec.prm.tombAddrWriter. SetAddress(exec.newAddress(*id)) + + return true } - return true + exec.status = statusUndefined + exec.err = err + + exec.log.Debug("could not save the tombstone", + zap.Error(err), + ) + return false } diff --git a/pkg/services/object/get/exec.go b/pkg/services/object/get/exec.go index 570111383a..c2579a7957 100644 --- a/pkg/services/object/get/exec.go +++ b/pkg/services/object/get/exec.go @@ -242,18 +242,7 @@ func (exec *execCtx) headChild(id oid.ID) (*objectSDK.Object, bool) { err := exec.svc.Head(exec.context(), prm) - switch { - default: - exec.status = statusUndefined - exec.err = err - - exec.log.Debug("could not get child object header", - zap.Stringer("child ID", id), - zap.Error(err), - ) - - return nil, false - case err == nil: + if err == nil { child := w.Object() if !exec.isChild(child) { @@ -267,21 +256,26 @@ func (exec *execCtx) headChild(id oid.ID) (*objectSDK.Object, bool) { return child, true } + exec.status = statusUndefined + exec.err = err + + exec.log.Debug("could not get child object header", + zap.Stringer("child ID", id), + zap.Error(err), + ) + + return nil, false } func (exec execCtx) remoteClient(info clientcore.NodeInfo) (getClient, bool) { c, err := exec.svc.clientCache.get(info) - switch { - default: - exec.status = statusUndefined - exec.err = err - - exec.log.Debug("could not construct remote node client") - case err == nil: + if err == nil { return c, true } - + exec.status = statusUndefined + exec.err = err + exec.log.Debug("could not construct remote node client") return nil, false } @@ -312,17 +306,16 @@ func (exec *execCtx) writeCollectedHeader() bool { exec.collectedHeader.CutPayload(), ) - switch { - default: + if err == nil { + exec.status = statusOK + exec.err = nil + } else { exec.status = statusUndefined exec.err = err exec.log.Debug("could not write header", zap.Error(err), ) - case err == nil: - exec.status = statusOK - exec.err = nil } return exec.status == statusOK @@ -350,17 +343,16 @@ func (exec *execCtx) writeObjectPayload(obj *objectSDK.Object, reader io.ReadClo err = exec.prm.objWriter.WriteChunk(obj.Payload()) } - switch { - default: + if err == nil { + exec.status = statusOK + exec.err = nil + } else { exec.status = statusUndefined exec.err = err exec.log.Debug("could not write payload chunk", zap.Error(err), ) - case err == nil: - exec.status = statusOK - exec.err = nil } return err == nil diff --git a/pkg/services/object/search/exec.go b/pkg/services/object/search/exec.go index cbdd5b6973..c31b437949 100644 --- a/pkg/services/object/search/exec.go +++ b/pkg/services/object/search/exec.go @@ -62,16 +62,15 @@ func (exec *execCtx) writeIDList(ids []oid.ID) { err = exec.prm.writer.WriteIDs(ids) } - switch { - default: + if err == nil { + exec.status = statusOK + exec.err = nil + } else { exec.status = statusUndefined exec.err = err exec.log.Debug("could not write object identifiers", zap.Error(err), ) - case err == nil: - exec.status = statusOK - exec.err = nil } } diff --git a/pkg/services/reputation/common/managers.go b/pkg/services/reputation/common/managers.go index 62c7e0780e..521e8ef2d9 100644 --- a/pkg/services/reputation/common/managers.go +++ b/pkg/services/reputation/common/managers.go @@ -36,8 +36,7 @@ type ManagersPrm struct { // The created managerBuilder does not require additional // initialization and is completely ready for work. func NewManagerBuilder(prm ManagersPrm, opts ...MngOption) ManagerBuilder { - switch { - case prm.NetMapSource == nil: + if prm.NetMapSource == nil { panic(fmt.Sprintf("invalid NetMapSource (%T):%v", prm.NetMapSource, prm.NetMapSource)) } From d1daa7f9ad26c959da5cc61948ea3b79655752c4 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 15:28:12 +0300 Subject: [PATCH 3/9] *: fix QF1003 lint issue Could use tagged switch on limit. Signed-off-by: Andrey Butusov --- cmd/neofs-node/policy_test.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cmd/neofs-node/policy_test.go b/cmd/neofs-node/policy_test.go index 6523315026..e7470bf9e1 100644 --- a/cmd/neofs-node/policy_test.go +++ b/cmd/neofs-node/policy_test.go @@ -415,15 +415,17 @@ func TestContainerNodes_ForEachContainerNodePublicKeyInLastTwoEpochs(t *testing. }) require.NoError(t, err) require.Len(t, calledKeys, limit) - if limit == 1 { + switch limit { + case 1: require.Contains(t, curNodeKeys, calledKeys[0]) - } else { + case 2: require.ElementsMatch(t, curNodeKeys, calledKeys[:2]) - if limit == 3 { - require.Contains(t, prevNodeKeys, calledKeys[2]) - } else if limit == 4 { - require.ElementsMatch(t, prevNodeKeys, calledKeys[2:]) - } + case 3: + require.ElementsMatch(t, curNodeKeys, calledKeys[:2]) + require.Contains(t, prevNodeKeys, calledKeys[2]) + case 4: + require.ElementsMatch(t, curNodeKeys, calledKeys[:2]) + require.ElementsMatch(t, prevNodeKeys, calledKeys[2:]) } } }) From 5526570a6f9a570eebe2f57716050079357d1ff8 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 15:25:34 +0300 Subject: [PATCH 4/9] *: fix ST1005 lint issue Error strings should not end with punctuation or newlines. Error strings should not be capitalized. Signed-off-by: Andrey Butusov --- cmd/neofs-cli/modules/acl/extended/create.go | 4 ++-- cmd/neofs-cli/modules/container/delete.go | 4 ++-- cmd/neofs-cli/modules/object/lock.go | 6 +++--- cmd/neofs-lens/internal/storage/list.go | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/neofs-cli/modules/acl/extended/create.go b/cmd/neofs-cli/modules/acl/extended/create.go index c0ade4f901..b007b5574b 100644 --- a/cmd/neofs-cli/modules/acl/extended/create.go +++ b/cmd/neofs-cli/modules/acl/extended/create.go @@ -71,13 +71,13 @@ func createEACL(cmd *cobra.Command, _ []string) error { var containerID cid.ID if cidArg != "" { if err := containerID.DecodeString(cidArg); err != nil { - return fmt.Errorf("invalid container ID: %w\n", err) + return fmt.Errorf("invalid container ID: %w", err) } } rulesFile, err := getRulesFromFile(fileArg) if err != nil { - return fmt.Errorf("can't read rules from file: %w\n", err) + return fmt.Errorf("can't read rules from file: %w", err) } rules = append(rules, rulesFile...) diff --git a/cmd/neofs-cli/modules/container/delete.go b/cmd/neofs-cli/modules/container/delete.go index 4fc9aa34bd..4851c413ac 100644 --- a/cmd/neofs-cli/modules/container/delete.go +++ b/cmd/neofs-cli/modules/container/delete.go @@ -91,8 +91,8 @@ Only owner of the container has a permission to remove container.`, } if len(res) != 0 { - return fmt.Errorf("Container wasn't removed because LOCK objects were found.\n"+ - "Use --%s flag to remove anyway.", commonflags.ForceFlag) + return fmt.Errorf("container wasn't removed because LOCK objects were found.\n"+ + "Use --%s flag to remove anyway", commonflags.ForceFlag) } } } diff --git a/cmd/neofs-cli/modules/object/lock.go b/cmd/neofs-cli/modules/object/lock.go index ffd0e48780..ae3548e0a6 100644 --- a/cmd/neofs-cli/modules/object/lock.go +++ b/cmd/neofs-cli/modules/object/lock.go @@ -29,7 +29,7 @@ var objectLockCmd = &cobra.Command{ var cnr cid.ID err := cnr.DecodeString(cidRaw) if err != nil { - return fmt.Errorf("Incorrect container arg: %w", err) + return fmt.Errorf("incorrect container arg: %w", err) } oidsRaw, _ := cmd.Flags().GetStringSlice(commonflags.OIDFlag) @@ -59,7 +59,7 @@ var objectLockCmd = &cobra.Command{ currEpoch, err := internalclient.GetCurrentEpoch(ctx, endpoint) if err != nil { - return fmt.Errorf("Request current epoch: %w", err) + return fmt.Errorf("request current epoch: %w", err) } exp = currEpoch + lifetime @@ -107,7 +107,7 @@ var objectLockCmd = &cobra.Command{ err = fmt.Errorf("finish object stream: %w", err) } if err != nil { - return fmt.Errorf("Store lock object for %s in NeoFS: %w", locked, err) + return fmt.Errorf("store lock object for %s in NeoFS: %w", locked, err) } cmd.Printf("Lock object ID for %s locked object: %s\n", locked, wrt.GetResult().StoredObjectID()) diff --git a/cmd/neofs-lens/internal/storage/list.go b/cmd/neofs-lens/internal/storage/list.go index af3235735d..9fdc1abcd6 100644 --- a/cmd/neofs-lens/internal/storage/list.go +++ b/cmd/neofs-lens/internal/storage/list.go @@ -44,7 +44,7 @@ func listFunc(cmd *cobra.Command, _ []string) error { return nil } if err != nil { - return fmt.Errorf("Storage iterator failure: %w", err) + return fmt.Errorf("storage iterator failure: %w", err) } } for _, at := range addrs { From 1db5c446b8b05a8f8340341f646db0c59fd5a3d3 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 15:03:54 +0300 Subject: [PATCH 5/9] *: fix QF1008 lint issue Could remove embedded field from selector. Signed-off-by: Andrey Butusov --- .../internal/modules/fschain/dump_hashes.go | 2 +- cmd/neofs-node/accounting.go | 2 +- cmd/neofs-node/config.go | 20 +++++------ cmd/neofs-node/control.go | 4 +-- cmd/neofs-node/main.go | 6 ++-- cmd/neofs-node/meta.go | 12 +++---- cmd/neofs-node/morph.go | 6 ++-- cmd/neofs-node/netmap.go | 2 +- cmd/neofs-node/object.go | 14 ++++---- cmd/neofs-node/reputation.go | 2 +- pkg/local_object_storage/engine/container.go | 10 +++--- pkg/local_object_storage/engine/control.go | 4 +-- .../engine/control_test.go | 6 ++-- pkg/local_object_storage/engine/error_test.go | 8 ++--- pkg/local_object_storage/engine/inhume.go | 2 +- pkg/local_object_storage/engine/put.go | 4 +-- pkg/local_object_storage/engine/shards.go | 4 +-- pkg/local_object_storage/shard/id.go | 4 +-- pkg/local_object_storage/shard/shard.go | 36 +++++++++---------- pkg/services/object/delete/delete.go | 2 +- pkg/services/object/put/service_test.go | 2 +- pkg/services/object/put/streamer.go | 10 +++--- pkg/services/object/search/search.go | 2 +- pkg/services/policer/policer.go | 4 +-- pkg/services/policer/process.go | 12 +++---- pkg/services/policer/reload.go | 4 +-- .../reputation/eigentrust/controller/calls.go | 2 +- .../session/storage/persistent/storage.go | 2 +- 28 files changed, 94 insertions(+), 94 deletions(-) diff --git a/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go b/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go index 293e7fca2f..22b8f988f4 100644 --- a/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go +++ b/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go @@ -221,7 +221,7 @@ func fillContractVersion(cmd *cobra.Command, c Client, infos []contractDumpInfo) script := sub.Bytes() emit.Instruction(bw.BinWriter, opcode.TRY, []byte{byte(3 + len(script) + 2), 0}) - bw.BinWriter.WriteBytes(script) + bw.WriteBytes(script) emit.Instruction(bw.BinWriter, opcode.ENDTRY, []byte{2 + 1}) emit.Opcodes(bw.BinWriter, opcode.PUSH0) } diff --git a/cmd/neofs-node/accounting.go b/cmd/neofs-node/accounting.go index b047de4544..1ea2f657cf 100644 --- a/cmd/neofs-node/accounting.go +++ b/cmd/neofs-node/accounting.go @@ -11,7 +11,7 @@ func initAccountingService(c *cfg) { initMorphComponents(c) } - balanceMorphWrapper, err := balance.NewFromMorph(c.cfgMorph.client, c.shared.basics.balanceSH) + balanceMorphWrapper, err := balance.NewFromMorph(c.cfgMorph.client, c.balanceSH) fatalOnErr(err) server := accountingService.New(&c.key.PrivateKey, c.networkState, balanceMorphWrapper) diff --git a/cmd/neofs-node/config.go b/cmd/neofs-node/config.go index 3ea4914f75..8b4732f00d 100644 --- a/cmd/neofs-node/config.go +++ b/cmd/neofs-node/config.go @@ -349,13 +349,13 @@ func initCfg(appCfg *config.Config) *cfg { wg: new(sync.WaitGroup), apiVersion: version.Current(), } - c.internals.healthStatus.Store(int32(control.HealthStatus_HEALTH_STATUS_UNDEFINED)) + c.healthStatus.Store(int32(control.HealthStatus_HEALTH_STATUS_UNDEFINED)) - c.internals.logLevel, err = zap.ParseAtomicLevel(c.appCfg.Logger.Level) + c.logLevel, err = zap.ParseAtomicLevel(c.appCfg.Logger.Level) fatalOnErr(err) logCfg := zap.NewProductionConfig() - logCfg.Level = c.internals.logLevel + logCfg.Level = c.logLevel logCfg.Encoding = c.appCfg.Logger.Encoding if !c.appCfg.Logger.Sampling.Enabled { logCfg.Sampling = nil @@ -367,7 +367,7 @@ func initCfg(appCfg *config.Config) *cfg { logCfg.EncoderConfig.EncodeTime = func(_ time.Time, _ zapcore.PrimitiveArrayEncoder) {} } - c.internals.log, err = logCfg.Build( + c.log, err = logCfg.Build( zap.AddStacktrace(zap.NewAtomicLevelAt(zap.FatalLevel)), ) fatalOnErr(err) @@ -399,7 +399,7 @@ func initCfg(appCfg *config.Config) *cfg { workerPool: containerWorkerPool, } c.cfgNetmap = cfgNetmap{ - state: c.basics.networkState, + state: c.networkState, workerPool: netmapWorkerPool, needBootstrap: !relayOnly, } @@ -420,7 +420,7 @@ func initCfg(appCfg *config.Config) *cfg { c.ownerIDFromKey = user.NewFromECDSAPublicKey(key.PrivateKey.PublicKey) c.metricsCollector = metrics.NewNodeMetrics(misc.Version) - c.basics.networkState.metrics = c.metricsCollector + c.networkState.metrics = c.metricsCollector c.veryLastClosers = make(map[string]func()) @@ -464,7 +464,7 @@ func initBasics(c *cfg, key *keys.PrivateKey, stateStorage *state.PersistentStor } cli, err := client.New(key, - client.WithContext(c.internals.ctx), + client.WithContext(c.ctx), client.WithDialTimeout(c.appCfg.FSChain.DialTimeout), client.WithLogger(c.log), client.WithAutoFSChainScope(), @@ -664,7 +664,7 @@ func (c *cfg) configWatcher(ctx context.Context) { // Logger - err = c.internals.logLevel.UnmarshalText([]byte(c.appCfg.Logger.Level)) + err = c.logLevel.UnmarshalText([]byte(c.appCfg.Logger.Level)) if err != nil { c.log.Error("invalid logger level configuration", zap.Error(err)) continue @@ -672,7 +672,7 @@ func (c *cfg) configWatcher(ctx context.Context) { // Policer - c.shared.policer.Reload(c.policerOpts()...) + c.policer.Reload(c.policerOpts()...) // Storage Engine @@ -704,7 +704,7 @@ func (c *cfg) configWatcher(ctx context.Context) { var p meta.Parameters p.NeoEnpoints = c.appCfg.FSChain.Endpoints - err = c.shared.metaService.Reload(p) + err = c.metaService.Reload(p) if err != nil { c.log.Error("failed to reload meta service configuration", zap.Error(err)) continue diff --git a/cmd/neofs-node/control.go b/cmd/neofs-node/control.go index cfabc19926..4b7650dcc1 100644 --- a/cmd/neofs-node/control.go +++ b/cmd/neofs-node/control.go @@ -24,7 +24,7 @@ func initControlService(c *cfg) { rawPubs = append(rawPubs, pubs[i].Bytes()) } - c.shared.control = controlSvc.New(&c.key.PrivateKey, rawPubs, c) + c.control = controlSvc.New(&c.key.PrivateKey, rawPubs, c) lis, err := net.Listen("tcp", endpoint) if err != nil { @@ -38,7 +38,7 @@ func initControlService(c *cfg) { stopGRPC("NeoFS Control API", c.cfgControlService.server, c.log) }) - control.RegisterControlServiceServer(c.cfgControlService.server, c.shared.control) + control.RegisterControlServiceServer(c.cfgControlService.server, c.control) c.wg.Add(1) go func() { runAndLog(c, "control", false, func(c *cfg) { diff --git a/cmd/neofs-node/main.go b/cmd/neofs-node/main.go index e68ccc08b2..d1dc93c280 100644 --- a/cmd/neofs-node/main.go +++ b/cmd/neofs-node/main.go @@ -144,7 +144,7 @@ func initApp(c *cfg) { c.workers = append(c.workers, newWorkerFromFunc(c.configWatcher)) - c.shared.control.MarkReady( + c.control.MarkReady( c.cfgObject.cfgLocalStorage.localStorage, c.netMapSource, c.cnrSrc, @@ -208,7 +208,7 @@ func (c *cfg) onShutdown(f func()) { func (c *cfg) restartMorph() error { c.log.Info("restarting internal services because of RPC connection loss...") - c.shared.resetCaches() + c.resetCaches() epoch, ni, err := getNetworkState(c) if err != nil { @@ -218,7 +218,7 @@ func (c *cfg) restartMorph() error { updateLocalState(c, epoch, ni) // drop expired sessions if any has appeared while node was sleeping - c.shared.privateTokenStore.RemoveOld(epoch) + c.privateTokenStore.RemoveOld(epoch) // bootstrap node after every reconnection cause the longevity of // a connection downstate is unpredictable and bootstrap TX is a diff --git a/cmd/neofs-node/meta.go b/cmd/neofs-node/meta.go index eac16de814..ea69e613a7 100644 --- a/cmd/neofs-node/meta.go +++ b/cmd/neofs-node/meta.go @@ -28,9 +28,9 @@ func initMeta(c *cfg) { c.cfgMeta.network = &neofsNetwork{ key: c.binPublicKey, - cnrClient: c.basics.cCli, + cnrClient: c.cCli, containers: c.cnrSrc, - network: c.basics.netMapSource, + network: c.netMapSource, header: c.cfgObject.getSvc, } @@ -40,18 +40,18 @@ func initMeta(c *cfg) { Network: c.cfgMeta.network, Timeout: c.appCfg.FSChain.DialTimeout, NeoEnpoints: c.appCfg.FSChain.Endpoints, - ContainerHash: c.basics.containerSH, - NetmapHash: c.basics.netmapSH, + ContainerHash: c.containerSH, + NetmapHash: c.netmapSH, RootPath: c.appCfg.Meta.Path, } if p.RootPath == "" { p.RootPath = "metadata" } - c.shared.metaService, err = meta.New(p) + c.metaService, err = meta.New(p) fatalOnErr(err) c.workers = append(c.workers, newWorkerFromFunc(func(ctx context.Context) { - err = c.shared.metaService.Run(ctx) + err = c.metaService.Run(ctx) if err != nil { c.internalErr <- fmt.Errorf("meta data service error: %w", err) } diff --git a/cmd/neofs-node/morph.go b/cmd/neofs-node/morph.go index 6315da9672..b59553e2e8 100644 --- a/cmd/neofs-node/morph.go +++ b/cmd/neofs-node/morph.go @@ -20,7 +20,7 @@ const ( func initMorphComponents(c *cfg) { var err error - morphCli := c.shared.basics.cli + morphCli := c.cli c.cfgMorph.client = morphCli c.onShutdown(morphCli.Close) @@ -82,8 +82,8 @@ func listenMorphNotifications(c *cfg) { return res, err }) - registerNotificationHandlers(c.shared.basics.netmapSH, lis, c.cfgNetmap.parsers, c.cfgNetmap.subscribers) - registerNotificationHandlers(c.shared.basics.containerSH, lis, c.cfgContainer.parsers, c.cfgContainer.subscribers) + registerNotificationHandlers(c.netmapSH, lis, c.cfgNetmap.parsers, c.cfgNetmap.subscribers) + registerNotificationHandlers(c.containerSH, lis, c.cfgContainer.parsers, c.cfgContainer.subscribers) lis.RegisterHeaderHandler(func(block *block.Header) { c.log.Debug("new block", zap.Uint32("index", block.Index)) diff --git a/cmd/neofs-node/netmap.go b/cmd/neofs-node/netmap.go index 27be8f6a1c..ff51d36178 100644 --- a/cmd/neofs-node/netmap.go +++ b/cmd/neofs-node/netmap.go @@ -249,7 +249,7 @@ func initNetmapService(c *cfg) { l := c.log.With(zap.Uint64("epoch", epoch)) l.Info("new epoch event, requesting new network map to sync SN connection caches...") - nm, err := c.shared.netMapSource.GetNetMapByEpoch(epoch) + nm, err := c.netMapSource.GetNetMapByEpoch(epoch) if err != nil { l.Info("failed to get network map by new epoch from event to sync SN connection cache", zap.Error(err)) return diff --git a/cmd/neofs-node/object.go b/cmd/neofs-node/object.go index 25013f1c3e..8996e26acf 100644 --- a/cmd/neofs-node/object.go +++ b/cmd/neofs-node/object.go @@ -186,7 +186,7 @@ func initObjectService(c *cfg) { fschain: c.cfgMorph.client, } - c.shared.replicator = replicator.New( + c.replicator = replicator.New( replicator.WithLogger(c.log), replicator.WithPutTimeout( c.appCfg.Replicator.PutTimeout, @@ -197,7 +197,7 @@ func initObjectService(c *cfg) { ), ) - c.shared.policer = policer.New( + c.policer = policer.New( policer.WithLogger(c.log), policer.WithLocalStorage(ls), policer.WithRemoteHeader( @@ -213,7 +213,7 @@ func initObjectService(c *cfg) { policer.WithObjectBatchSize(c.appCfg.Policer.ObjectBatchSize), ) - c.workers = append(c.workers, c.shared.policer) + c.workers = append(c.workers, c.policer) sGet := getsvc.New(c, getsvc.WithLogger(c.log), @@ -235,11 +235,11 @@ func initObjectService(c *cfg) { searchsvc.WithKeyStorage(keyStorage), ) - mNumber, err := c.shared.basics.cli.MagicNumber() + mNumber, err := c.cli.MagicNumber() fatalOnErr(err) os := &objectSource{get: sGet} - sPut := putsvc.NewService(&transport{clients: putConstructor}, c, c.shared.metaService, + sPut := putsvc.NewService(&transport{clients: putConstructor}, c, c.metaService, initQuotas(c.cCli, c.nCli, c.cfgObject.quotasTTL), putsvc.WithNetworkMagic(mNumber), putsvc.WithKeyStorage(keyStorage), @@ -305,11 +305,11 @@ func initObjectService(c *cfg) { storage := storageForObjectService{ local: ls, - metaSvc: c.shared.metaService, + metaSvc: c.metaService, putSvc: sPut, keys: keyStorage, } - server := objectService.New(objSvc, mNumber, c.cfgObject.pool.search, fsChain, storage, c.metaService, c.shared.basics.key.PrivateKey, c.metricsCollector, aclChecker, aclSvc, coreConstructor) + server := objectService.New(objSvc, mNumber, c.cfgObject.pool.search, fsChain, storage, c.metaService, c.key.PrivateKey, c.metricsCollector, aclChecker, aclSvc, coreConstructor) os.server = server for _, srv := range c.cfgGRPC.servers { diff --git a/cmd/neofs-node/reputation.go b/cmd/neofs-node/reputation.go index cfc5289d36..6fdb1dc707 100644 --- a/cmd/neofs-node/reputation.go +++ b/cmd/neofs-node/reputation.go @@ -34,7 +34,7 @@ import ( ) func initReputationService(c *cfg) { - wrap, err := repClient.NewFromMorph(c.cfgMorph.client, c.shared.basics.reputationSH) + wrap, err := repClient.NewFromMorph(c.cfgMorph.client, c.reputationSH) fatalOnErr(err) localKey := c.key.PublicKey().Bytes() diff --git a/pkg/local_object_storage/engine/container.go b/pkg/local_object_storage/engine/container.go index 27b1ec759e..1a18b475c1 100644 --- a/pkg/local_object_storage/engine/container.go +++ b/pkg/local_object_storage/engine/container.go @@ -32,7 +32,7 @@ func (e *StorageEngine) ContainerInfo(cnr cid.ID) (uint64, uint64, error) { var objsNumber uint64 for _, sh := range e.unsortedShards() { - shardInfo, err := sh.Shard.ContainerInfo(cnr) + shardInfo, err := sh.ContainerInfo(cnr) if err != nil { e.reportShardError(sh, "can't get container size", err, zap.Stringer("container_id", cnr)) @@ -64,7 +64,7 @@ func (e *StorageEngine) ListContainers() ([]cid.ID, error) { uniqueIDs := make(map[cid.ID]struct{}) for _, sh := range e.unsortedShards() { - res, err := sh.Shard.ListContainers() + res, err := sh.ListContainers() if err != nil { e.reportShardError(sh, "can't get list of containers", err) continue @@ -98,7 +98,7 @@ func (e *StorageEngine) DeleteContainer(ctx context.Context, cID cid.ID) error { for _, sh := range e.unsortedShards() { wg.Go(func() error { - err := sh.Shard.DeleteContainer(ctx, cID) + err := sh.DeleteContainer(ctx, cID) if err != nil { err = fmt.Errorf("container cleanup in %s shard: %w", sh.ID(), err) e.log.Warn("container cleanup", zap.Error(err)) @@ -114,7 +114,7 @@ func (e *StorageEngine) DeleteContainer(ctx context.Context, cID cid.ID) error { } func (e *StorageEngine) deleteNotFoundContainers() error { - if e.cfg.containerSource == nil { + if e.containerSource == nil { return nil } @@ -132,7 +132,7 @@ func (e *StorageEngine) deleteNotFoundContainers() error { for _, cnrStored := range res { // in the most loaded scenarios it is a cache - if _, err = e.cfg.containerSource.Get(cnrStored); errors.As(err, new(apistatus.ContainerNotFound)) { + if _, err = e.containerSource.Get(cnrStored); errors.As(err, new(apistatus.ContainerNotFound)) { err = e.shards[iCopy].InhumeContainer(cnrStored) if err != nil { return fmt.Errorf("'%s' container cleanup in '%s' shard: %w", cnrStored, shID, err) diff --git a/pkg/local_object_storage/engine/control.go b/pkg/local_object_storage/engine/control.go index 643c168fb3..e27791c13b 100644 --- a/pkg/local_object_storage/engine/control.go +++ b/pkg/local_object_storage/engine/control.go @@ -21,7 +21,7 @@ func (e *StorageEngine) open() error { for id, sh := range e.shards { if err := sh.Open(); err != nil { - if !e.cfg.isIgnoreUninitedShards { + if !e.isIgnoreUninitedShards { return fmt.Errorf("open shard %s: %w", id, err) } e.log.Debug("could not open shard", @@ -42,7 +42,7 @@ func (e *StorageEngine) Init() error { for id, sh := range e.shards { if err := sh.Init(); err != nil { - if !e.cfg.isIgnoreUninitedShards { + if !e.isIgnoreUninitedShards { return fmt.Errorf("init shard %s: %w", id, err) } e.log.Debug("could not init shard", diff --git a/pkg/local_object_storage/engine/control_test.go b/pkg/local_object_storage/engine/control_test.go index 11a4a103d1..785e55904a 100644 --- a/pkg/local_object_storage/engine/control_test.go +++ b/pkg/local_object_storage/engine/control_test.go @@ -104,7 +104,7 @@ func testEngineFailInitAndReload(t *testing.T, badDir string, errOnAdd bool, s [ for id = range e.shards { break } - configID = calculateShardID(e.shards[id].Shard.DumpInfo()) + configID = calculateShardID(e.shards[id].DumpInfo()) e.mtx.RUnlock() err = e.Open() @@ -176,8 +176,8 @@ func TestPersistentShardID(t *testing.T) { require.Equal(t, id, newID) require.NoError(t, e.Close()) - p1 := e.shards[id[0].String()].Shard.DumpInfo().MetaBaseInfo.Path - p2 := e.shards[id[1].String()].Shard.DumpInfo().MetaBaseInfo.Path + p1 := e.shards[id[0].String()].DumpInfo().MetaBaseInfo.Path + p2 := e.shards[id[1].String()].DumpInfo().MetaBaseInfo.Path tmp := filepath.Join(dir, "tmp") require.NoError(t, os.Rename(p1, tmp)) require.NoError(t, os.Rename(p2, p1)) diff --git a/pkg/local_object_storage/engine/error_test.go b/pkg/local_object_storage/engine/error_test.go index abc3864ff7..00741da16f 100644 --- a/pkg/local_object_storage/engine/error_test.go +++ b/pkg/local_object_storage/engine/error_test.go @@ -63,7 +63,7 @@ func TestErrorReporting(t *testing.T) { obj.SetPayload(make([]byte, errSmallSize)) e.mtx.RLock() - err := e.shards[id[0].String()].Shard.Put(obj, nil) + err := e.shards[id[0].String()].Put(obj, nil) e.mtx.RUnlock() require.NoError(t, err) @@ -140,7 +140,7 @@ func TestBlobstorFailback(t *testing.T) { obj.SetPayloadSize(uint64(size)) e.mtx.RLock() - err = e.shards[id[0].String()].Shard.Put(obj, nil) + err = e.shards[id[0].String()].Put(obj, nil) e.mtx.RUnlock() require.NoError(t, err) objs = append(objs, obj) @@ -157,8 +157,8 @@ func TestBlobstorFailback(t *testing.T) { checkShardState(t, e, id[0], 0, mode.ReadWrite) require.NoError(t, e.Close()) - p1 := e.shards[id[0].String()].Shard.DumpInfo().BlobStorInfo.Path - p2 := e.shards[id[1].String()].Shard.DumpInfo().BlobStorInfo.Path + p1 := e.shards[id[0].String()].DumpInfo().BlobStorInfo.Path + p2 := e.shards[id[1].String()].DumpInfo().BlobStorInfo.Path tmp := filepath.Join(dir, "tmp") require.NoError(t, os.Rename(p1, tmp)) require.NoError(t, os.Rename(p2, p1)) diff --git a/pkg/local_object_storage/engine/inhume.go b/pkg/local_object_storage/engine/inhume.go index 3832af03ce..4057247c9e 100644 --- a/pkg/local_object_storage/engine/inhume.go +++ b/pkg/local_object_storage/engine/inhume.go @@ -250,7 +250,7 @@ func (e *StorageEngine) IsLocked(addr oid.Address) (bool, error) { } for _, sh := range e.unsortedShards() { - locked, err := sh.Shard.IsLocked(addr) + locked, err := sh.IsLocked(addr) if err != nil { e.reportShardError(sh, "can't check object's lockers", err, zap.Stringer("addr", addr)) return false, err diff --git a/pkg/local_object_storage/engine/put.go b/pkg/local_object_storage/engine/put.go index 4814f32f4d..133fa66edd 100644 --- a/pkg/local_object_storage/engine/put.go +++ b/pkg/local_object_storage/engine/put.go @@ -189,7 +189,7 @@ func (e *StorageEngine) putToShard(sh shardWrapper, ind int, pool util.WorkerPoo } func (e *StorageEngine) putToShardWithDeadLine(sh shardWrapper, ind int, pool util.WorkerPool, addr oid.Address, obj *objectSDK.Object, objBin []byte) bool { - timer := time.NewTimer(e.cfg.objectPutTimeout) + timer := time.NewTimer(e.objectPutTimeout) const putCooldown = 100 * time.Millisecond ticker := time.NewTicker(putCooldown) @@ -197,7 +197,7 @@ func (e *StorageEngine) putToShardWithDeadLine(sh shardWrapper, ind int, pool ut for { select { case <-timer.C: - e.log.Error("could not put object", zap.Stringer("addr", addr), zap.Duration("deadline", e.cfg.objectPutTimeout)) + e.log.Error("could not put object", zap.Stringer("addr", addr), zap.Duration("deadline", e.objectPutTimeout)) return false case <-ticker.C: putDone, exists, overloaded := e.putToShard(sh, ind, pool, addr, obj, objBin) diff --git a/pkg/local_object_storage/engine/shards.go b/pkg/local_object_storage/engine/shards.go index 40b594375f..5f6903be01 100644 --- a/pkg/local_object_storage/engine/shards.go +++ b/pkg/local_object_storage/engine/shards.go @@ -70,8 +70,8 @@ func (e *StorageEngine) AddShard(opts ...shard.Option) (*shard.ID, error) { return nil, fmt.Errorf("could not add %s shard: %w", sh.ID().String(), err) } - if e.cfg.metrics != nil { - e.cfg.metrics.SetReadonly(sh.ID().String(), sh.GetMode() != mode.ReadWrite) + if e.metrics != nil { + e.metrics.SetReadonly(sh.ID().String(), sh.GetMode() != mode.ReadWrite) } return sh.ID(), nil diff --git a/pkg/local_object_storage/shard/id.go b/pkg/local_object_storage/shard/id.go index 10eb70a7cc..6c63fe3ffc 100644 --- a/pkg/local_object_storage/shard/id.go +++ b/pkg/local_object_storage/shard/id.go @@ -43,8 +43,8 @@ func (s *Shard) UpdateID() (err error) { if len(id) != 0 { s.info.ID = NewIDFromBytes(id) - if s.cfg.metricsWriter != nil { - s.cfg.metricsWriter.SetShardID(s.info.ID.String()) + if s.metricsWriter != nil { + s.metricsWriter.SetShardID(s.info.ID.String()) } } diff --git a/pkg/local_object_storage/shard/shard.go b/pkg/local_object_storage/shard/shard.go index a3f1952964..a6aecf0af6 100644 --- a/pkg/local_object_storage/shard/shard.go +++ b/pkg/local_object_storage/shard/shard.go @@ -216,7 +216,7 @@ func WithWriteCache(use bool) Option { // hasWriteCache returns bool if write cache exists on shards. func (s *Shard) hasWriteCache() bool { - return s.cfg.useWriteCache + return s.useWriteCache } // needResyncMetabase returns true if metabase is needed to be refilled. @@ -305,15 +305,15 @@ func WithReportErrorFunc(f func(selfID string, message string, err error)) Optio } func (s *Shard) fillInfo() { - s.cfg.info.MetaBaseInfo = s.metaBase.DumpInfo() - s.cfg.info.BlobStorInfo = StorageInfo{ + s.info.MetaBaseInfo = s.metaBase.DumpInfo() + s.info.BlobStorInfo = StorageInfo{ Type: s.blobStor.Type(), Path: s.blobStor.Path(), } - s.cfg.info.Mode = s.GetMode() + s.info.Mode = s.GetMode() - if s.cfg.useWriteCache { - s.cfg.info.WriteCacheInfo = s.writeCache.DumpInfo() + if s.useWriteCache { + s.info.WriteCacheInfo = s.writeCache.DumpInfo() } } @@ -329,7 +329,7 @@ const ( ) func (s *Shard) initMetrics() { - if s.cfg.metricsWriter != nil && !s.GetMode().NoMetabase() { + if s.metricsWriter != nil && !s.GetMode().NoMetabase() { cc, err := s.metaBase.ObjectCounters() if err != nil { s.log.Warn("meta: object counter read", @@ -339,8 +339,8 @@ func (s *Shard) initMetrics() { return } - s.cfg.metricsWriter.SetObjectCounter(physical, cc.Phy()) - s.cfg.metricsWriter.SetObjectCounter(logical, cc.Logic()) + s.metricsWriter.SetObjectCounter(physical, cc.Phy()) + s.metricsWriter.SetObjectCounter(logical, cc.Logic()) cnrList, err := s.metaBase.Containers() if err != nil { @@ -369,26 +369,26 @@ func (s *Shard) initMetrics() { // incObjectCounter increment both physical and logical object // counters. func (s *Shard) incObjectCounter() { - if s.cfg.metricsWriter != nil { - s.cfg.metricsWriter.IncObjectCounter(physical) - s.cfg.metricsWriter.IncObjectCounter(logical) + if s.metricsWriter != nil { + s.metricsWriter.IncObjectCounter(physical) + s.metricsWriter.IncObjectCounter(logical) } } func (s *Shard) decObjectCounterBy(typ string, v uint64) { - if s.cfg.metricsWriter != nil { - s.cfg.metricsWriter.AddToObjectCounter(typ, -int(v)) + if s.metricsWriter != nil { + s.metricsWriter.AddToObjectCounter(typ, -int(v)) } } func (s *Shard) addToContainerSize(cnr string, size int64) { - if s.cfg.metricsWriter != nil { - s.cfg.metricsWriter.AddToContainerSize(cnr, size) + if s.metricsWriter != nil { + s.metricsWriter.AddToContainerSize(cnr, size) } } func (s *Shard) addToPayloadCounter(size int64) { - if s.cfg.metricsWriter != nil { - s.cfg.metricsWriter.AddToPayloadSize(size) + if s.metricsWriter != nil { + s.metricsWriter.AddToPayloadSize(size) } } diff --git a/pkg/services/object/delete/delete.go b/pkg/services/object/delete/delete.go index c628b057fd..3403a767a0 100644 --- a/pkg/services/object/delete/delete.go +++ b/pkg/services/object/delete/delete.go @@ -31,7 +31,7 @@ func (s *Service) Delete(ctx context.Context, prm Prm) error { exec.execute() - return exec.statusError.err + return exec.err } func (exec *execCtx) execute() { diff --git a/pkg/services/object/put/service_test.go b/pkg/services/object/put/service_test.go index 6e231d569e..a704bc3a39 100644 --- a/pkg/services/object/put/service_test.go +++ b/pkg/services/object/put/service_test.go @@ -472,7 +472,7 @@ func newTestClusterForRepPolicy(t *testing.T, repNodes, cnrReserveNodes, outCnrN cluster.nodeSessions[i] = mockNodeSession{ signer: neofscryptotest.Signer(), - expiresAt: cluster.nodeNetworks[i].mockNodeState.epoch + 1, + expiresAt: cluster.nodeNetworks[i].epoch + 1, } cluster.nodeServices[i] = NewService(cluster.nodeServices, &cluster.nodeNetworks[i], nil, diff --git a/pkg/services/object/put/streamer.go b/pkg/services/object/put/streamer.go index 7e7739c6bb..f3d84f55f6 100644 --- a/pkg/services/object/put/streamer.go +++ b/pkg/services/object/put/streamer.go @@ -76,10 +76,10 @@ func (p *Streamer) initTarget(prm *PutInitPrm) error { // prepare untrusted-Put object target p.target = &validatingTarget{ - l: p.cfg.log, + l: p.log, nextTarget: p.newCommonTarget(prm), fmt: p.fmtValidator, - quotaLimiter: p.cfg.quotaLimiter, + quotaLimiter: p.quotaLimiter, cachedCnr: prm.cnr, maxPayloadSz: p.maxPayloadSz, @@ -128,10 +128,10 @@ func (p *Streamer) initTarget(prm *PutInitPrm) error { sessionSigner := user.NewAutoIDSigner(*sessionKey) prm.sessionSigner = sessionSigner p.target = &validatingTarget{ - l: p.cfg.log, + l: p.log, fmt: p.fmtValidator, unpreparedObject: true, - quotaLimiter: p.cfg.quotaLimiter, + quotaLimiter: p.quotaLimiter, cachedCnr: prm.cnr, nextTarget: newSlicingTarget( p.ctx, @@ -248,7 +248,7 @@ func (p *Streamer) newCommonTarget(prm *PutInitPrm) internal.Target { localNodeInContainer: prm.localNodeInContainer, localNodeSigner: prm.localNodeSigner, sessionSigner: prm.sessionSigner, - cnrClient: p.cfg.cnrClient, + cnrClient: p.cnrClient, metainfoConsistencyAttr: metaAttribute(prm.cnr), metaSigner: prm.localSignerRFC6979, localOnly: prm.common.LocalOnly(), diff --git a/pkg/services/object/search/search.go b/pkg/services/object/search/search.go index be28870576..4b92430c3e 100644 --- a/pkg/services/object/search/search.go +++ b/pkg/services/object/search/search.go @@ -34,7 +34,7 @@ func (s *Service) Search(ctx context.Context, prm Prm) error { exec.execute(ctx) - return exec.statusError.err + return exec.err } func (exec *execCtx) execute(ctx context.Context) { diff --git a/pkg/services/policer/policer.go b/pkg/services/policer/policer.go index 246d6247e1..804aac77ae 100644 --- a/pkg/services/policer/policer.go +++ b/pkg/services/policer/policer.go @@ -162,9 +162,9 @@ func New(opts ...Option) *Policer { } func (p *Policer) getHeadTimeout() time.Duration { - p.cfg.mtx.RLock() + p.mtx.RLock() headTimeout := p.headTimeout - p.cfg.mtx.RUnlock() + p.mtx.RUnlock() return headTimeout } diff --git a/pkg/services/policer/process.go b/pkg/services/policer/process.go index c81e0b2332..30328d2d1a 100644 --- a/pkg/services/policer/process.go +++ b/pkg/services/policer/process.go @@ -23,10 +23,10 @@ func (p *Policer) Run(ctx context.Context) { } func (p *Policer) shardPolicyWorker(ctx context.Context) { - p.cfg.mtx.RLock() + p.mtx.RLock() repCooldown := p.repCooldown batchSize := p.batchSize - p.cfg.mtx.RUnlock() + p.mtx.RUnlock() var ( addrs []objectcore.AddressWithAttributes @@ -82,17 +82,17 @@ func (p *Policer) shardPolicyWorker(ctx context.Context) { case <-ctx.Done(): return case <-t.C: - p.cfg.mtx.RLock() + p.mtx.RLock() t.Reset(p.repCooldown) - p.cfg.mtx.RUnlock() + p.mtx.RUnlock() } } } func (p *Policer) poolCapacityWorker(ctx context.Context) { - p.cfg.mtx.RLock() + p.mtx.RLock() maxCapacity := p.maxCapacity - p.cfg.mtx.RUnlock() + p.mtx.RUnlock() ticker := time.NewTicker(p.rebalanceFreq) for { diff --git a/pkg/services/policer/reload.go b/pkg/services/policer/reload.go index 674b30f29c..da0502f64c 100644 --- a/pkg/services/policer/reload.go +++ b/pkg/services/policer/reload.go @@ -13,8 +13,8 @@ func (p *Policer) Reload(opts ...Option) { o(cfg) } - p.cfg.mtx.Lock() - defer p.cfg.mtx.Unlock() + p.mtx.Lock() + defer p.mtx.Unlock() p.headTimeout = cfg.headTimeout p.repCooldown = cfg.repCooldown diff --git a/pkg/services/reputation/eigentrust/controller/calls.go b/pkg/services/reputation/eigentrust/controller/calls.go index 418814866d..e11cb532ff 100644 --- a/pkg/services/reputation/eigentrust/controller/calls.go +++ b/pkg/services/reputation/eigentrust/controller/calls.go @@ -42,7 +42,7 @@ func (c *Controller) Continue(prm ContinuePrm) { c.mCtx[prm.Epoch] = iterCtx iterCtx.Context, iterCtx.cancel = context.WithCancel(context.Background()) - iterCtx.EpochIteration.SetEpoch(prm.Epoch) + iterCtx.SetEpoch(prm.Epoch) iterations, err := c.prm.IterationsProvider.EigenTrustIterations() if err != nil { diff --git a/pkg/services/session/storage/persistent/storage.go b/pkg/services/session/storage/persistent/storage.go index 00745be6aa..117de6074e 100644 --- a/pkg/services/session/storage/persistent/storage.go +++ b/pkg/services/session/storage/persistent/storage.go @@ -62,7 +62,7 @@ func NewTokenStore(path string, opts ...Option) (*TokenStore, error) { // enable encryption if it // was configured so if cfg.privateKey != nil { - rawKey := make([]byte, (cfg.privateKey.Curve.Params().N.BitLen()+7)/8) + rawKey := make([]byte, (cfg.privateKey.Params().N.BitLen()+7)/8) cfg.privateKey.D.FillBytes(rawKey) c, err := aes.NewCipher(rawKey) From fae1e2d96077e3e312c2bdc2d585a20a39b5e89b Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 14:26:23 +0300 Subject: [PATCH 6/9] *: fix QF1012 lint issue Use fmt.Fprintf(...) instead of Write([]byte(fmt.Sprintf(...))). Signed-off-by: Andrey Butusov --- cmd/neofs-adm/internal/modules/fschain/config.go | 8 ++++---- cmd/neofs-adm/internal/modules/fschain/dump_hashes.go | 4 ++-- cmd/neofs-adm/internal/modules/fschain/dump_names.go | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/neofs-adm/internal/modules/fschain/config.go b/cmd/neofs-adm/internal/modules/fschain/config.go index 810035553f..c2a502eaa2 100644 --- a/cmd/neofs-adm/internal/modules/fschain/config.go +++ b/cmd/neofs-adm/internal/modules/fschain/config.go @@ -72,18 +72,18 @@ func dumpNetworkConfig(cmd *cobra.Command, _ []string) error { nbuf := make([]byte, 8) copy(nbuf, v) n := binary.LittleEndian.Uint64(nbuf) - _, _ = tw.Write([]byte(fmt.Sprintf("%s:\t%d (int)\n", k, n))) + _, _ = fmt.Fprintf(tw, "%s:\t%d (int)\n", k, n) case netmapEigenTrustAlphaKey: - _, _ = tw.Write([]byte(fmt.Sprintf("%s:\t%s (str)\n", k, v))) + _, _ = fmt.Fprintf(tw, "%s:\t%s (str)\n", k, v) case netmapHomomorphicHashDisabledKey: vBool, err := tuple[1].TryBool() if err != nil { return invalidConfigValueErr(k) } - _, _ = tw.Write([]byte(fmt.Sprintf("%s:\t%t (bool)\n", k, vBool))) + _, _ = fmt.Fprintf(tw, "%s:\t%t (bool)\n", k, vBool) default: - _, _ = tw.Write([]byte(fmt.Sprintf("%s:\t%s (hex)\n", k, hex.EncodeToString(v)))) + _, _ = fmt.Fprintf(tw, "%s:\t%s (hex)\n", k, hex.EncodeToString(v)) } } diff --git a/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go b/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go index 22b8f988f4..599275b26b 100644 --- a/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go +++ b/cmd/neofs-adm/internal/modules/fschain/dump_hashes.go @@ -197,9 +197,9 @@ func printContractInfo(cmd *cobra.Command, infos []contractDumpInfo) { if info.version == "" { info.version = "unknown" } - _, _ = tw.Write([]byte(fmt.Sprintf("%s\t(%s):\t%s\t%s\n", + _, _ = fmt.Fprintf(tw, "%s\t(%s):\t%s\t%s\n", info.name, info.version, info.hash.StringLE(), - timeStr))) + timeStr) } _ = tw.Flush() diff --git a/cmd/neofs-adm/internal/modules/fschain/dump_names.go b/cmd/neofs-adm/internal/modules/fschain/dump_names.go index dc876515b5..82846735a7 100644 --- a/cmd/neofs-adm/internal/modules/fschain/dump_names.go +++ b/cmd/neofs-adm/internal/modules/fschain/dump_names.go @@ -81,8 +81,8 @@ func dumpNames(cmd *cobra.Command, _ []string) error { buf := bytes.NewBuffer(nil) tw := tabwriter.NewWriter(buf, 0, 2, 2, ' ', 0) for i := range res { - _, _ = tw.Write([]byte(fmt.Sprintf("%s\t%s\n", - res[i].name, time.UnixMilli(res[i].exp).String()))) + _, _ = fmt.Fprintf(tw, "%s\t%s\n", + res[i].name, time.UnixMilli(res[i].exp).String()) } _ = tw.Flush() From dfb6c9e7ef67051e1278061aa417b2e810625e3a Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 15:20:33 +0300 Subject: [PATCH 7/9] sn: fix wrong embedded func name for reputation client Signed-off-by: Andrey Butusov --- cmd/neofs-node/object.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/neofs-node/object.go b/cmd/neofs-node/object.go index 8996e26acf..be741639a1 100644 --- a/cmd/neofs-node/object.go +++ b/cmd/neofs-node/object.go @@ -374,7 +374,7 @@ func (c *reputationClient) ObjectDelete(ctx context.Context, containerID cid.ID, return res, err } -func (c *reputationClient) GetObjectInit(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm client.PrmObjectGet) (objectSDK.Object, *client.PayloadReader, error) { +func (c *reputationClient) ObjectGetInit(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm client.PrmObjectGet) (objectSDK.Object, *client.PayloadReader, error) { hdr, rdr, err := c.MultiAddressClient.ObjectGetInit(ctx, containerID, objectID, signer, prm) // FIXME: (neofs-node#1193) here we submit only initialization errors, reading errors are not processed From c7fb247fefa45c9551312db32ec95562a7443a26 Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 16:19:16 +0300 Subject: [PATCH 8/9] adm: simplify the use of the function `ExitOnErr` Signed-off-by: Andrey Butusov --- cmd/neofs-adm/main.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cmd/neofs-adm/main.go b/cmd/neofs-adm/main.go index a85495ee57..5190550543 100644 --- a/cmd/neofs-adm/main.go +++ b/cmd/neofs-adm/main.go @@ -9,7 +9,5 @@ import ( func main() { err := modules.Execute() - if err != nil { - cmderr.ExitOnErr(fmt.Errorf("Error: %w\n", err)) - } + cmderr.ExitOnErr(fmt.Errorf("Error: %w\n", err)) } From 8a05444720abc8ed916cbd4f823feddd6896251f Mon Sep 17 00:00:00 2001 From: Andrey Butusov Date: Tue, 23 Sep 2025 17:47:44 +0300 Subject: [PATCH 9/9] cmderr: move printed message prefix to `ExitOnErr` Signed-off-by: Andrey Butusov --- cmd/internal/cmderr/errors.go | 2 +- cmd/neofs-adm/main.go | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmd/internal/cmderr/errors.go b/cmd/internal/cmderr/errors.go index 61effc54ff..8733efd0c1 100644 --- a/cmd/internal/cmderr/errors.go +++ b/cmd/internal/cmderr/errors.go @@ -22,7 +22,7 @@ func ExitOnErr(err error) { if !errors.As(err, &e) { e.Code = 1 } - fmt.Fprintln(os.Stderr, err) + fmt.Fprintln(os.Stderr, "Error:", err) os.Exit(e.Code) } } diff --git a/cmd/neofs-adm/main.go b/cmd/neofs-adm/main.go index 5190550543..b8dae5d8be 100644 --- a/cmd/neofs-adm/main.go +++ b/cmd/neofs-adm/main.go @@ -1,13 +1,11 @@ package main import ( - "fmt" - "github.com/nspcc-dev/neofs-node/cmd/internal/cmderr" "github.com/nspcc-dev/neofs-node/cmd/neofs-adm/internal/modules" ) func main() { err := modules.Execute() - cmderr.ExitOnErr(fmt.Errorf("Error: %w\n", err)) + cmderr.ExitOnErr(err) }