Commit graph

4582 commits

Author SHA1 Message Date
0990a9b0bd [#1055] blobstor: fix mode metric
It used to always show CLOSED after setting shard mode
to read-only regardless of actual mode.
Now metric represents actual blobstor mode of operations.

Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
2024-03-29 20:44:47 +00:00
8690db697c [#1056] Makefile: fix target locode-download
All checks were successful
DCO action / DCO (pull_request) Successful in 6m2s
Build / Build Components (1.20) (pull_request) Successful in 9m35s
Build / Build Components (1.21) (pull_request) Successful in 10m43s
Vulncheck / Vulncheck (pull_request) Successful in 14m6s
Tests and linters / gopls check (pull_request) Successful in 7m19s
Tests and linters / Staticcheck (pull_request) Successful in 7m57s
Tests and linters / Lint (pull_request) Successful in 11m0s
Tests and linters / Tests (1.21) (pull_request) Successful in 11m40s
Tests and linters / Tests (1.20) (pull_request) Successful in 11m58s
Tests and linters / Tests with -race (pull_request) Successful in 12m5s
wget fails if .cache dir does not exist

Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
2024-03-28 14:50:27 +03:00
c7a12ca3d8 [#1054] network: Optimize IsTLSEnabled()
All checks were successful
DCO action / DCO (pull_request) Successful in 5m33s
Vulncheck / Vulncheck (pull_request) Successful in 5m54s
Build / Build Components (1.21) (pull_request) Successful in 10m3s
Tests and linters / gopls check (pull_request) Successful in 11m49s
Build / Build Components (1.20) (pull_request) Successful in 12m47s
Tests and linters / Staticcheck (pull_request) Successful in 13m21s
Tests and linters / Lint (pull_request) Successful in 14m21s
Tests and linters / Tests (1.20) (pull_request) Successful in 16m39s
Tests and linters / Tests with -race (pull_request) Successful in 16m46s
Tests and linters / Tests (1.21) (pull_request) Successful in 16m59s
No big deal, but it is called multiple times in sorting routine, this
easily results in 20 allocations per group traversal.

```
goos: linux
goarch: amd64
pkg: git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network
cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
                    │     old     │                 new                 │
                    │   sec/op    │   sec/op     vs base                │
AddressTLSEnabled-8   184.6n ± 1%   103.3n ± 6%  -44.04% (p=0.000 n=10)

                    │    old     │                new                │
                    │    B/op    │   B/op    vs base                 │
AddressTLSEnabled-8   704.0 ± 0%   0.0 ± 0%  -100.00% (p=0.000 n=10)

                    │    old     │                 new                 │
                    │ allocs/op  │ allocs/op   vs base                 │
AddressTLSEnabled-8   1.000 ± 0%   0.000 ± 0%  -100.00% (p=0.000 n=10)
```

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-21 18:48:35 +03:00
c09c701613 [#1048] metabase: Fix drop buckets during resync
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 1m35s
DCO action / DCO (pull_request) Successful in 2m12s
Build / Build Components (1.21) (pull_request) Successful in 3m57s
Build / Build Components (1.20) (pull_request) Successful in 4m45s
Tests and linters / Staticcheck (pull_request) Successful in 5m32s
Tests and linters / gopls check (pull_request) Successful in 5m33s
Tests and linters / Lint (pull_request) Successful in 6m18s
Tests and linters / Tests (1.20) (pull_request) Successful in 8m8s
Tests and linters / Tests with -race (pull_request) Successful in 8m14s
Tests and linters / Tests (1.21) (pull_request) Successful in 8m36s
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-19 14:28:31 +03:00
5d58b44bc8 [#1044] node: Drop unused methods from APE implementation
All checks were successful
DCO action / DCO (pull_request) Successful in 1m23s
Build / Build Components (1.21) (pull_request) Successful in 3m26s
Vulncheck / Vulncheck (pull_request) Successful in 3m31s
Build / Build Components (1.20) (pull_request) Successful in 4m25s
Tests and linters / Staticcheck (pull_request) Successful in 5m40s
Tests and linters / gopls check (pull_request) Successful in 5m46s
Tests and linters / Lint (pull_request) Successful in 6m17s
Tests and linters / Tests (1.20) (pull_request) Successful in 8m30s
Tests and linters / Tests with -race (pull_request) Successful in 8m34s
Tests and linters / Tests (1.21) (pull_request) Successful in 9m0s
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-18 18:44:10 +03:00
6bf77cabd4 [#1044] ape: Add morph chain cache
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-18 18:44:10 +03:00
6959e617c4 [#1047] object: Set container owner ID property to ape request
* Introduce ContainerOwner field in RequestContext.
* Set ContainerOwner in aclv2 middleware.
* Set PropertyKeyContainerOwnerID for object ape request.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-18 15:39:50 +00:00
7278201753 [#1030] adm: Add command morph ape list-targets
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 4m16s
DCO action / DCO (pull_request) Successful in 4m14s
Build / Build Components (1.20) (pull_request) Successful in 5m58s
Build / Build Components (1.21) (pull_request) Successful in 5m56s
Tests and linters / Staticcheck (pull_request) Successful in 6m35s
Tests and linters / Lint (pull_request) Successful in 7m2s
Tests and linters / gopls check (pull_request) Successful in 6m55s
Tests and linters / Tests (1.20) (pull_request) Successful in 9m5s
Tests and linters / Tests (1.21) (pull_request) Successful in 9m39s
Tests and linters / Tests with -race (pull_request) Successful in 11m35s
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-15 13:48:43 +03:00
bd216b79cb Release v0.38.0
Some checks failed
DCO action / DCO (pull_request) Successful in 9m41s
Vulncheck / Vulncheck (pull_request) Successful in 11m6s
Build / Build Components (1.21) (pull_request) Successful in 16m3s
Build / Build Components (1.20) (pull_request) Successful in 17m4s
Tests and linters / Staticcheck (pull_request) Successful in 18m48s
Tests and linters / gopls check (pull_request) Successful in 18m43s
Tests and linters / Tests with -race (pull_request) Failing after 25m33s
Tests and linters / Lint (pull_request) Successful in 25m49s
Tests and linters / Tests (1.21) (pull_request) Failing after 25m38s
Tests and linters / Tests (1.20) (pull_request) Failing after 25m43s
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-15 10:16:01 +03:00
d7be70e93f [#1040] object: Wrap CheckAPE errors to status errors
* All methods should wrap CheckAPE error, if it occurs, to
  status error.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-14 07:34:03 +00:00
fb9219af39 [#976] Fix trailing whitespace and end of file
All checks were successful
DCO action / DCO (pull_request) Successful in 1m24s
Vulncheck / Vulncheck (pull_request) Successful in 4m43s
Build / Build Components (1.21) (pull_request) Successful in 6m3s
Build / Build Components (1.20) (pull_request) Successful in 6m16s
Tests and linters / Staticcheck (pull_request) Successful in 6m47s
Tests and linters / Lint (pull_request) Successful in 7m32s
Tests and linters / gopls check (pull_request) Successful in 9m12s
Tests and linters / Tests (1.20) (pull_request) Successful in 12m36s
Tests and linters / Tests (1.21) (pull_request) Successful in 13m27s
Tests and linters / Tests with -race (pull_request) Successful in 3m31s
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-13 15:33:26 +03:00
bf70d77844 [#976] adm: Allow to remove all chains by target
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-13 15:33:26 +03:00
11fde3cde4 [#976] cli: Allow to remove all chains by target
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-13 15:33:26 +03:00
5ee5f1df42 [#976] control: Introduce new method RemoveChainLocalOverridesByTarget
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-13 15:33:19 +03:00
2d595ec15f [#976] ape: Update dependency
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-13 14:54:19 +03:00
7ed07d2dfd [#976] morph: Implement missing methods for SwitchRPCGuardedActor
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-13 14:54:19 +03:00
0a600521ad [#1043] dev: Add empty pass config
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-13 10:29:45 +00:00
17f5463389 [#1043] cli: Add reset evacuation status command
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-13 10:29:45 +00:00
31e2396a5f [#1043] control: Add ResetEvacuationStatus implementation
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-13 10:29:45 +00:00
926cdeb072 [#1043] services: Regenerate proto
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-13 10:29:45 +00:00
d1d53d2bb6 [#963] node: Add logging for waitNotaryDeposit
All checks were successful
DCO action / DCO (pull_request) Successful in 2m19s
Vulncheck / Vulncheck (pull_request) Successful in 3m13s
Build / Build Components (1.21) (pull_request) Successful in 4m13s
Build / Build Components (1.20) (pull_request) Successful in 4m18s
Tests and linters / Staticcheck (pull_request) Successful in 5m57s
Tests and linters / Lint (pull_request) Successful in 6m31s
Tests and linters / gopls check (pull_request) Successful in 7m11s
Tests and linters / Tests (1.20) (pull_request) Successful in 9m42s
Tests and linters / Tests (1.21) (pull_request) Successful in 10m30s
Tests and linters / Tests with -race (pull_request) Successful in 10m33s
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-13 11:59:51 +03:00
7a4b6057ce Revert "[#963] node: Go on initialization even deposit notary is hung"
This reverts commit b4cb54e7ed.

Signed-off-by: aarifullin <a.arifullin@yadro.com>
2024-03-13 11:53:59 +03:00
f42a529f49 [#1038] pre-commit: Use cached tests in hook
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-12 18:07:26 +00:00
179b6e64fa [#1038] Makefile: Allow to override testflags
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-12 18:07:26 +00:00
e3579922d8 [#1038] pre-commit: Remove gitlint
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-12 18:07:26 +00:00
5c252c9193 [#1039] object: Skip APE check for certain request roles
All checks were successful
DCO action / DCO (pull_request) Successful in 1m31s
Vulncheck / Vulncheck (pull_request) Successful in 2m52s
Build / Build Components (1.21) (pull_request) Successful in 3m52s
Build / Build Components (1.20) (pull_request) Successful in 4m16s
Tests and linters / gopls check (pull_request) Successful in 11m54s
Tests and linters / Staticcheck (pull_request) Successful in 12m31s
Tests and linters / Tests (1.21) (pull_request) Successful in 12m49s
Tests and linters / Tests (1.20) (pull_request) Successful in 13m8s
Tests and linters / Tests with -race (pull_request) Successful in 13m14s
Tests and linters / Lint (pull_request) Successful in 13m31s
* Skip APE check if a role is Container.
* Skip APE check if a role is IR and methods are get-like.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-12 16:15:20 +03:00
b4cb54e7ed [#963] node: Go on initialization even deposit notary is hung
* Make makeAndWaitNotaryDeposit run asynchronously as worker
  during application boot-up.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-12 10:18:07 +00:00
6eb63cf5c7 [#1036] Makefile: Add missing comments
All checks were successful
DCO action / DCO (pull_request) Successful in 3m6s
Vulncheck / Vulncheck (pull_request) Successful in 3m32s
Build / Build Components (1.20) (pull_request) Successful in 4m24s
Build / Build Components (1.21) (pull_request) Successful in 4m29s
Tests and linters / Staticcheck (pull_request) Successful in 5m15s
Tests and linters / gopls check (pull_request) Successful in 5m42s
Tests and linters / Lint (pull_request) Successful in 6m6s
Tests and linters / Tests (1.20) (pull_request) Successful in 8m48s
Tests and linters / Tests with -race (pull_request) Successful in 9m3s
Tests and linters / Tests (1.21) (pull_request) Successful in 9m40s
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-12 10:54:53 +03:00
aa27596d77 [#1036] help.mk: Print target without comments
Make it easy to notice missing comments and avoid reusing comment from
some other place.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-12 10:54:53 +03:00
d9fe63ee03 [#1036] help.mk: Fix target regexp pattern
We use no space before the colon, but we use it when declaring a
variable.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-12 10:54:53 +03:00
3195142d67 [#959] writecache: Avoid manipulation with cache in DEGRADED mode
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-11 18:35:41 +00:00
d433b49265 [#973] node: Resolve perfsprint linter
All checks were successful
DCO action / DCO (pull_request) Successful in 2m40s
Vulncheck / Vulncheck (pull_request) Successful in 3m41s
Build / Build Components (1.20) (pull_request) Successful in 4m27s
Build / Build Components (1.21) (pull_request) Successful in 5m6s
Tests and linters / Staticcheck (pull_request) Successful in 6m16s
Tests and linters / gopls check (pull_request) Successful in 6m23s
Tests and linters / Lint (pull_request) Successful in 6m48s
Tests and linters / Tests (1.20) (pull_request) Successful in 9m4s
Tests and linters / Tests with -race (pull_request) Successful in 9m9s
Tests and linters / Tests (1.21) (pull_request) Successful in 9m23s
`fmt.Errorf can be replaced with errors.New` and `fmt.Sprintf can be replaced with string addition`

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-11 17:55:50 +03:00
66a26b7775 [#973] node: Resolve revive: unused-parameter linter
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-11 17:11:49 +03:00
dacf580b87 [#973] Makefile: Up golangci-lint version
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-11 17:02:23 +03:00
63a29110ee [#634] go.mod: Bump protobuf version
All checks were successful
DCO action / DCO (pull_request) Successful in 5m1s
Vulncheck / Vulncheck (pull_request) Successful in 6m45s
Tests and linters / Staticcheck (pull_request) Successful in 7m51s
Build / Build Components (1.21) (pull_request) Successful in 7m29s
Build / Build Components (1.20) (pull_request) Successful in 8m21s
Tests and linters / gopls check (pull_request) Successful in 8m38s
Tests and linters / Lint (pull_request) Successful in 14m27s
Tests and linters / Tests with -race (pull_request) Successful in 17m35s
Tests and linters / Tests (1.20) (pull_request) Successful in 3m11s
Tests and linters / Tests (1.21) (pull_request) Successful in 2m38s
Found by vulncheck:
Vulnerability #1: GO-2024-2611
    Infinite loop in JSON unmarshaling in google.golang.org/protobuf
  More info: https://pkg.go.dev/vuln/GO-2024-2611
  Module: google.golang.org/protobuf
    Found in: google.golang.org/protobuf@v1.32.0
    Fixed in: google.golang.org/protobuf@v1.33.0

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-06 13:12:34 +03:00
0882840bf5 [#634] shard: Add writecache inhume tests
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-06 13:12:34 +03:00
e5d18e7a85 [#1023] adm: Make --namespace flag required
All checks were successful
DCO action / DCO (pull_request) Successful in 3m58s
Build / Build Components (1.20) (pull_request) Successful in 5m18s
Build / Build Components (1.21) (pull_request) Successful in 5m26s
Tests and linters / gopls check (pull_request) Successful in 6m28s
Tests and linters / Lint (pull_request) Successful in 6m53s
Tests and linters / Tests (1.20) (pull_request) Successful in 8m16s
Vulncheck / Vulncheck (pull_request) Successful in 9m50s
Tests and linters / Staticcheck (pull_request) Successful in 11m8s
Tests and linters / Tests (1.21) (pull_request) Successful in 14m1s
Tests and linters / Tests with -race (pull_request) Successful in 6m47s
Signed-off-by: Alexander Chuprov <a.chuprov@yadro.com>
2024-03-05 16:03:39 +03:00
b84cf91f73 [#1009] adm: Make workaround for get-admin and list-rule-chains
* Inroduce workaround to create actor for contract storage interface
  without passing a real alphabet wallet. This is made by creating
  a dummy account.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-05 12:34:53 +00:00
c6f0545298 [#1025] Fill last releases changelog
All checks were successful
DCO action / DCO (pull_request) Successful in 3m51s
Vulncheck / Vulncheck (pull_request) Successful in 5m9s
Build / Build Components (1.21) (pull_request) Successful in 5m56s
Build / Build Components (1.20) (pull_request) Successful in 6m5s
Tests and linters / Staticcheck (pull_request) Successful in 6m44s
Tests and linters / gopls check (pull_request) Successful in 7m31s
Tests and linters / Lint (pull_request) Successful in 7m57s
Tests and linters / Tests (1.20) (pull_request) Successful in 9m7s
Tests and linters / Tests (1.21) (pull_request) Successful in 9m34s
Tests and linters / Tests with -race (pull_request) Successful in 10m32s
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-05 11:14:21 +03:00
702351a5d1 [#983] blobstor: Allow to specify wait before drop time
All checks were successful
DCO action / DCO (pull_request) Successful in 1m11s
Build / Build Components (1.21) (pull_request) Successful in 3m29s
Vulncheck / Vulncheck (pull_request) Successful in 2m53s
Build / Build Components (1.20) (pull_request) Successful in 4m8s
Tests and linters / Staticcheck (pull_request) Successful in 4m19s
Tests and linters / Lint (pull_request) Successful in 5m50s
Tests and linters / gopls check (pull_request) Successful in 5m40s
Tests and linters / Tests (1.20) (pull_request) Successful in 7m46s
Tests and linters / Tests (1.21) (pull_request) Successful in 8m6s
Tests and linters / Tests with -race (pull_request) Successful in 8m50s
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-05 09:23:57 +03:00
1c504dca5c [#1021] dev: Up neo-go version
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 9m56s
DCO action / DCO (pull_request) Successful in 9m47s
Tests and linters / gopls check (pull_request) Successful in 14m23s
Build / Build Components (1.20) (pull_request) Successful in 14m13s
Build / Build Components (1.21) (pull_request) Successful in 15m12s
Tests and linters / Staticcheck (pull_request) Successful in 16m53s
Tests and linters / Tests (1.20) (pull_request) Successful in 21m6s
Tests and linters / Tests (1.21) (pull_request) Successful in 21m10s
Tests and linters / Lint (pull_request) Successful in 21m36s
Tests and linters / Tests with -race (pull_request) Successful in 22m0s
Current version of neo-go is 0.105.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-04 16:16:37 +03:00
b38effd799 [#1019] go.mod: Update sdk-go
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-03-04 07:44:38 +00:00
ae5bb87e70 Revert "[#866] Use TTL for blobovnicza tree cache"
All checks were successful
DCO action / DCO (pull_request) Successful in 2m7s
Vulncheck / Vulncheck (pull_request) Successful in 3m7s
Tests and linters / Staticcheck (pull_request) Successful in 5m12s
Tests and linters / Lint (pull_request) Successful in 6m23s
Tests and linters / Tests with -race (pull_request) Successful in 7m11s
Tests and linters / gopls check (pull_request) Successful in 7m27s
Tests and linters / Tests (1.20) (pull_request) Successful in 8m5s
Tests and linters / Tests (1.21) (pull_request) Successful in 8m22s
Build / Build Components (1.21) (pull_request) Successful in 1m41s
Build / Build Components (1.20) (pull_request) Successful in 1m56s
This reverts commit d9cbb16bd3.

Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-03-01 19:29:33 +03:00
46a04463b2 [#1016] forgejo: Add gopls check step
All checks were successful
DCO action / DCO (pull_request) Successful in 1m34s
Vulncheck / Vulncheck (pull_request) Successful in 3m28s
Build / Build Components (1.21) (pull_request) Successful in 4m21s
Build / Build Components (1.20) (pull_request) Successful in 4m29s
Tests and linters / Staticcheck (pull_request) Successful in 6m7s
Tests and linters / Lint (pull_request) Successful in 6m28s
Tests and linters / gopls check (pull_request) Successful in 6m17s
Tests and linters / Tests (1.20) (pull_request) Successful in 8m23s
Tests and linters / Tests with -race (pull_request) Successful in 8m37s
Tests and linters / Tests (1.21) (pull_request) Successful in 8m53s
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-01 12:13:48 +03:00
d6534fd755 [#1016] frostfs-node: Fix gopls issues
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-01 12:13:43 +03:00
6dbb61caf4 [#1016] Makefile: Add gopls check target
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-03-01 12:13:35 +03:00
6f25c790aa [#1012] cli: Fix messages for list commands
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-03-01 07:16:57 +00:00
93bf9acbc2 [#898] control: Remove removed flag from RemoveChainLocalOverrideResponse
* Remove removed flag in service.proto for RemoveChainLocalOverrideResponse.
* Regenerate control API.
* Return error only if RemoveOverride returns non-NotFound code.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-02-28 19:07:07 +00:00
75a1a95c2c [#986] tree: Skip ACL checks if basicACL mask is unset
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-02-28 19:05:57 +00:00
b1d171c261 [#986] container: Interpret APE NoRuleFound as request deny
* If APE check returns NoRuleFound, then it is taken for request deny.
* Add more unit-test for ape container middleware.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2024-02-28 19:05:57 +00:00