* Added TransportSplitter wrapper around ExecutionService to
split container ID list read from contract in parts that are
smaller than grpc max message size. Batch size can be changed
in node configuration file (as in example config file).
* Changed `container list` implementaion in cli: now ListStream
is called by default. Old List is called only if ListStream
is not implemented.
Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
It was unused and we employ better abstractions now.
gopatch:
```
@@
var a, b expression
@@
-a, b, _ := getRPCClient(...)
+a, b := getRPCClient(...)
```
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
`nns get-records` and `nns tokens` command do not need to sign anything,
so remove useless actor and use invoker directly.
`NewLocalActor()` is only used in `ape` and `nns` packages. `ape`
package seem to use it correctly, only when alphabet wallets are
provided, so no changes there.
Also, remove --alphabet-wallets flag from commands that do not need it.
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
It was not possible previously, because GetAllRecords() was not declared
safe in frostfs-contract.
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
Placement vector may contain fewer nodes count than it required by policy
due to the outage of the one of the node.
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
* Use `cmd/internal/common/ape` parser commands within `ape`
subcommands
* Use flag names from `cmd/internal/common/ape
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
* Use `cmd/internal/common/ape` parser commands within `generate-ape-override`
subcommand
* Use flag names from `cmd/internal/common/ape`
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
* Refactor ape-manager subcommands
* Use `cmd/internal/common/ape` parser commands within ape-manager subcommands
* Use flag names from `cmd/internal/common/ape`
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
* Refactor local override managing subcommands
* Use `cmd/internal/common/ape` parser commands within local
override subcommands
* Use flag names from `cmd/internal/common/ape`
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
* Introduce common parsing commands to use them in `frostfs-cli`
and `frostfs-adm` APE-related subcommands
* Introduce common flags for these parsing commands
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
* Both `frostfs-cli` and `frostfs-adm` APE-related subcommands use
`PrintHumanReadableAPEChain` to print a parsed APE-chain. So, it's
more correct to have it in a common package over `frostfs-cli` and
`frostfs-adm` folders.
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
* `ConvertEACLToAPE` is useful method which couldn't be imported
out of frostfs-node so far as it has been in `internal`
* Since `ConvertEACLToAPE` and related structures and unit-tests
are placed in `pkg/util`
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
DropGraves() is only used to drop gravemarks after a tombstone
removal. Thus, it makes sense to do Inhume() and DropGraves() in one
transaction. It has less overhead and no unexpected problems in case
of sudden power failure.
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
- Remove `testNewShard` and `setInitializedShards` because they
violated the default engine workflow. The correct workflow is:
first use `New()`, followed by `Open()`, and then `Init()`. As a
result, adding new logic to `(*StorageEngine).Init` caused several
tests to fail with a panic when attempting to access uninitialized
resources. Now, all engines created with the test utils must be
initialized manually. The new helper method `prepare` can be used
for that purpose.
- Additionally, `setInitializedShards` hardcoded the shard worker
pool size, which prevented it from being configured in tests and
benchmarks. This has been fixed as well.
- Ensure engine initialization is done wherever it was missing.
- Refactor `setShardsNumOpts`, `setShardsNumAdditionalOpts`, and
`setShardsNum`. Make them all depend on `setShardsNumOpts`.
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
Move `BenchmarkExists` from `engine_test.go` to `exists_test.go`
for better organization and clarity.
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
The slice returned from bucket.Get() is only valid during the tx
lifetime. Cloning it is not necessary everywhere, but better safe than
sorry.
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>