Commit Graph

717 Commits (1a5886e776de79fc6598838242e4dc7ff21e7bea)

Author SHA1 Message Date
Airat Arifullin a9237aabd2 [#121] client: Make PrmObjectSearch fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-11-01 17:45:06 +03:00
Airat Arifullin a487033505 [#121] client: Nuke out unused prmCommonMeta
DCO / DCO (pull_request) Successful in 1m1s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m25s Details
Tests and linters / Tests (1.21) (pull_request) Successful in 1m25s Details
Tests and linters / Lint (pull_request) Successful in 2m29s Details
Signed-off-by: Airat Arifullin a.arifullin@yadro.com
2023-10-31 22:55:25 +03:00
Airat Arifullin 51c3618850 [#121] client: Make PrmContainerList fields public
Signed-off-by: Airat Arifullin a.arifullin@yadro.com
2023-10-31 22:55:25 +03:00
Evgenii Stratonikov 665e5807bc [#188] transformer: Allow to provide size hint
For big objects with known size we can optimize allocation patterns
by providing size hint. As with any hint, it does not affect transformer
functionality: slices with capacity > MaxSize are never allocated.

```
goos: linux
goarch: amd64
pkg: git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/transformer
cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
                                                │     out     │
                                                │   sec/op    │
Transformer/small/no_size_hint-8                  65.44µ ± 3%
Transformer/small/no_size_hint,_with_buffer-8     64.24µ ± 5%
Transformer/small/with_size_hint,_with_buffer-8   58.70µ ± 5%
Transformer/big/no_size_hint-8                    367.8m ± 3%
Transformer/big/no_size_hint,_with_buffer-8       562.7m ± 0%
Transformer/big/with_size_hint,_with_buffer-8     385.6m ± 7%
geomean                                           5.197m

                                                │     out      │
                                                │     B/op     │
Transformer/small/no_size_hint-8                  13.40Ki ± 0%
Transformer/small/no_size_hint,_with_buffer-8     13.40Ki ± 0%
Transformer/small/with_size_hint,_with_buffer-8   13.39Ki ± 0%
Transformer/big/no_size_hint-8                    288.0Mi ± 0%
Transformer/big/no_size_hint,_with_buffer-8       1.390Gi ± 0%
Transformer/big/with_size_hint,_with_buffer-8     288.0Mi ± 0%
geomean                                           2.533Mi

                                                │    out     │
                                                │ allocs/op  │
Transformer/small/no_size_hint-8                  92.00 ± 0%
Transformer/small/no_size_hint,_with_buffer-8     92.00 ± 0%
Transformer/small/with_size_hint,_with_buffer-8   92.00 ± 0%
Transformer/big/no_size_hint-8                    546.5 ± 0%
Transformer/big/no_size_hint,_with_buffer-8       607.5 ± 0%
Transformer/big/with_size_hint,_with_buffer-8     545.5 ± 0%
geomean                                           228.1
```

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-10-30 12:13:04 +00:00
Evgenii Stratonikov a02c0bfac8 [#186] netmap: Marshal policy with brackets
DCO / DCO (pull_request) Successful in 1m14s Details
Tests and linters / Tests (1.21) (pull_request) Successful in 1m34s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m47s Details
Tests and linters / Lint (pull_request) Successful in 2m52s Details
Brackets can be semantically important and must not be omitted,
otherwise the output is plain wrong.
We do not take the responsibility to preserve every bracket, though,
because parser does some optimizations related to grouping long chains
of filters combined with the same operation.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-10-27 10:54:45 +03:00
Evgenii Stratonikov 20d325e307 [#167] netmap: Fix reverse min agregator
The higher the price, the lower reverse min weight should be.
Previously nodes with 0 price had 0 weight which is a bit misleading.

Introduced in d71a0e0755.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-10-27 07:53:19 +00:00
Egor Olefirenko 670619d242 [#131] client: keep backwards-compatibility, update README.md, fix chore
Signed-off-by: Egor Olefirenko <egor.olefirenko892@gmail.com>
2023-10-26 14:35:49 +00:00
Egor Olefirenko 0d79d10482 [#131] client: rename option consistently and fix test
Signed-off-by: Egor Olefirenko <egor.olefirenko892@gmail.com>
2023-10-26 14:35:49 +00:00
Egor Olefirenko 9727beb47d [#131] client: Switch ResolveFrostFSFailures to DontResolveFrostFSFailures option
Signed-off-by: Egor Olefirenko <egor.olefirenko892@gmail.com>
2023-10-26 14:35:49 +00:00
Airat Arifullin 84315fab6a [#121] client: Make PrmBalanceGet fields public
Tests and linters / Tests (1.21) (pull_request) Successful in 1m1s Details
Tests and linters / Lint (pull_request) Successful in 2m29s Details
DCO / DCO (pull_request) Successful in 4m13s Details
Tests and linters / Tests (1.20) (pull_request) Failing after 5m47s Details
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-10-23 18:53:14 +03:00
Dmitrii Stepanov 71335489ae [#183] forgejo: Make linter great again
DCO / DCO (pull_request) Successful in 50s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m8s Details
Tests and linters / Tests (1.21) (pull_request) Successful in 6m45s Details
Tests and linters / Lint (pull_request) Successful in 12m49s Details
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2023-10-23 18:13:40 +03:00
Airat Arifullin 4c1feaf2cb [#182] pool: Fix linter error about deprecated methods
DCO / DCO (pull_request) Successful in 1m11s Details
Tests and linters / Lint (pull_request) Successful in 1m30s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m25s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m1s Details
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-10-23 17:40:00 +03:00
Airat Arifullin 5804128ff3 [#121] client: Make PrmObjectPutSingle fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-10-19 08:38:13 +00:00
Denis Kirillov abd38c918e [#177] pool: Support NetMapSnapshot method
DCO / DCO (pull_request) Successful in 1m1s Details
Tests and linters / Lint (pull_request) Successful in 1m20s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m27s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m36s Details
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-10-18 11:31:53 +03:00
Alexey Vanin fc4551b843 [#172] pool: Use priority of errors in tree pool
Tests and linters / Tests (1.20) (pull_request) Successful in 1m8s Details
Tests and linters / Lint (pull_request) Successful in 1m33s Details
DCO / DCO (pull_request) Successful in 5m8s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m2s Details
When retry happens, use priority map to decide
which error to return. Consider network errors
less desirable than business logic errors.

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-10-11 12:00:34 +03:00
Alexey Vanin eb5288f4a5 [#172] pool: Do more retries on unexpected tree service responses
DCO / DCO (pull_request) Successful in 2m12s Details
Tests and linters / Lint (pull_request) Successful in 3m33s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 3m35s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m3s Details
1. Try its best by looking for nodes during 'GetNodeByPath'
2. Retry on 'tree not found' and other not found errors

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-10-06 11:12:48 +03:00
Alexey Vanin 60463871db [#171] pool: Add test for healthy status monitor
Tests and linters / Tests (1.20) (pull_request) Successful in 1m10s Details
Tests and linters / Lint (pull_request) Successful in 1m31s Details
DCO / DCO (pull_request) Successful in 4m12s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 5m9s Details
Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-10-03 19:47:22 +03:00
Alexey Vanin 8a04638749 [#171] pool: Close only dialed connections
To avoid panics during close operation, close
only dialed connections.

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-10-03 19:47:22 +03:00
Alexey Vanin ddbfb758c9 [#171] pool: Use dial status to close connections during restarts
Every client restart, pool creates new client instance. If client
failed due to dial error, there was no prior connection and go
routine on a server side. If client failed due to communication
or business logic errors, then server side maintains connection and
client should close it to avoid routine and connection leak.

Dialing is a part of healthcheck, so health status is now a enum
of three values:
- unhealthy due to dial fail,
- unhealthy due to transmission fail,
- healthy.

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-10-03 17:00:36 +03:00
andnilin@gmail.com d71a0e0755 [#88] netmap: use bool, fix hrw_sort tests
Signed-off-by: Andrew Danilin <andnilin@gmail.com>
2023-10-03 07:05:03 +00:00
AndrewDanilin 163b3e1961 [#88] netmap: fix min aggregator bug, add tests
Signed-off-by: Andrew Danilin <andnilin@gmail.com>
2023-10-03 07:05:03 +00:00
Airat Arifullin 84b9d29fc9 [#170] checksum: Use constant mapping for checksum types
DCO / DCO (pull_request) Successful in 1m8s Details
Tests and linters / Lint (pull_request) Successful in 1m22s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m43s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m39s Details
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-28 17:20:24 +03:00
Alexey Vanin 99c273f499 [#169] pool: Close inner pools during close routine
DCO / DCO (pull_request) Successful in 1m9s Details
Tests and linters / Lint (pull_request) Successful in 1m26s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m27s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m44s Details
Some apps do not reuse pool instance and expect that
`pool.Close()` free resources. But it didn't actually
close inner SDK clients, so it leads to goroutine leak
in storage.

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-09-20 12:16:13 +03:00
Evgenii Stratonikov 555ccc63b2 [#167] netmap: Allow to select insufficient number of nodes
DCO / DCO (pull_request) Successful in 57s Details
Tests and linters / Lint (pull_request) Successful in 2m31s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 3m22s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 5m5s Details
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-15 14:47:54 +03:00
Evgenii Stratonikov 0550438b53 [#167] netmap/tests: Add replica to invalid tests
Make sure we fail exactly because of the reason specified.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-15 14:33:44 +03:00
Evgenii Stratonikov c899163860 [#167] netmap/tests: Add json file name to the test output
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-15 14:33:44 +03:00
Evgenii Stratonikov ac8fc6d440 [#162] netmap: Allow to parse single unnamed selectors
DCO / DCO (pull_request) Successful in 1m6s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m38s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m34s Details
Tests and linters / Lint (pull_request) Successful in 5m27s Details
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-11 15:22:24 +03:00
Evgenii Stratonikov 0a0b590df3 [#162] Fix pre-commit warnings
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-11 15:21:35 +03:00
Evgenii Stratonikov 4df642e941 [#162] netmap: Fix possible panic
Placement policy is unvalidated external input.
Under no circumstances should we panic here.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-11 15:19:56 +03:00
Evgenii Stratonikov 8bc64e088e [#161] .golangci.yml: Reenable deprecated usage warnings
DCO / DCO (pull_request) Successful in 1m12s Details
Tests and linters / Lint (pull_request) Successful in 1m28s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m47s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m57s Details
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-08 17:17:02 +03:00
Evgenii Stratonikov 49ad985cad [#161] *: Do not use math/rand.Read()
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2023-09-08 17:17:02 +03:00
Airat Arifullin aa12d8c6a6 [#121] client: Make PrmObjectHash fields public
* Introduce buildRequest for PrmObjectHash

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-08 13:36:45 +00:00
Airat Arifullin 303508328a [#121] pool: Refactor PrmSessionCreate usage
Tests and linters / Lint (pull_request) Successful in 1m2s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m8s Details
DCO / DCO (pull_request) Successful in 3m55s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 5m3s Details
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-05 17:32:03 +03:00
Airat Arifullin 55699d1480 [#121] client: Make PrmSessionCreate fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-05 17:30:42 +03:00
Airat Arifullin 55a1f23e71 [#121] client: Make PrmEndpointInfo, PrmNetworkInfo fields public
DCO / DCO (pull_request) Successful in 44s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m21s Details
Tests and linters / Lint (pull_request) Successful in 3m11s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 5m29s Details
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-04 19:55:23 +03:00
Airat Arifullin 291a71ba84 [#121] client: Make PrmAnnounceSpace fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-04 19:53:34 +03:00
Airat Arifullin 5a471e5002 [#121] client: Make PrmObjectDelete fields public
* Introduce buildRequest for PrmObjectDelete
* Refactor the usage of these params in pool

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-09-04 14:14:22 +00:00
Anton Nikiforov b5fe52d6bd [#150] policy: Check for redundant selectors and filters
DCO / DCO (pull_request) Successful in 43s Details
Tests and linters / Lint (pull_request) Successful in 1m17s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m21s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m22s Details
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2023-08-29 14:16:57 +03:00
Airat Arifullin 84e7e69f98 [#121] client: Make PrmObjectGet/Head/GetRange fields public
DCO / DCO (pull_request) Successful in 45s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m10s Details
Tests and linters / Lint (pull_request) Successful in 2m13s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 4m49s Details
* Remove common PrmObjectRead structure
* Introduce buildRequest for PrmObjectGet/Head/GetRange
* Refactor the usage of these params in pool

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-08-28 11:26:57 +03:00
Denis Kirillov 46a214d065 [#149] pool: Configure homomorphic hash and buffer size
DCO / DCO (pull_request) Successful in 2m39s Details
Tests and linters / Lint (pull_request) Successful in 3m23s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 4m1s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 4m25s Details
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-08-25 09:45:15 +03:00
Denis Kirillov 202412230a [#115] pool: Drop part buffer pool
Tests and linters / Tests (1.20) (pull_request) Successful in 1m6s Details
Tests and linters / Lint (pull_request) Successful in 1m28s Details
DCO / DCO (pull_request) Successful in 4m29s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 5m32s Details
Tests showed that using part buffer pool doesn't save memory a lot.
Especially on big parts.
Probably we can use pool only for small parts
after adding buffer in payloadSizeLimiter

Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-08-21 12:03:03 +03:00
Denis Kirillov 3cb3841073 [#115] pool: Try putSingle if possible
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-08-21 12:03:03 +03:00
Denis Kirillov faeeeab87a [#114] pool: Don't use part buffers when client cut is off
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-08-21 12:02:40 +03:00
Denis Kirillov cae215534f [#114] pool: Fix linter errors
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-08-21 12:02:40 +03:00
Denis Kirillov 518fb79bc0 [#114] pool: Support client cut with memory limiter
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-08-21 12:02:40 +03:00
Airat Arifullin 342524159a [#121] pool: Make PrmContainerSetEACL fields public
DCO / DCO (pull_request) Successful in 54s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 1m18s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m28s Details
Tests and linters / Lint (pull_request) Successful in 3m7s Details
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-08-21 10:33:19 +03:00
Airat Arifullin 22978303f8 [#121] clientt: Make PrmContainerSetEACL fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-08-18 18:05:47 +03:00
Airat Arifullin 6fdbe75517 [#121] pool: Make PrmContainerEACL fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-08-16 09:53:47 +00:00
Airat Arifullin 3353940554 [#121] client: Make PrmContainerEACL fields public
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-08-16 09:53:47 +00:00
Artem Tataurov a3b5d4d4f5 [#51] Add node addresses as debug information
DCO / DCO (pull_request) Successful in 47s Details
Tests and linters / Tests (1.19) (pull_request) Successful in 1m14s Details
Tests and linters / Lint (pull_request) Successful in 4m49s Details
Tests and linters / Tests (1.20) (pull_request) Successful in 6m24s Details
Signed-off-by: Artem Tataurov <a.tataurov@yadro.com>
2023-08-15 09:51:40 +03:00