[#1586] objsvc: Allow to send search response in multiple messages
All checks were successful
Pre-commit hooks / Pre-commit (push) Successful in 1m18s
Vulncheck / Vulncheck (push) Successful in 1m16s
Build / Build Components (push) Successful in 1m41s
Tests and linters / gopls check (push) Successful in 2m17s
Tests and linters / Run gofumpt (push) Successful in 2m31s
Tests and linters / Lint (push) Successful in 3m9s
Tests and linters / Staticcheck (push) Successful in 3m9s
Tests and linters / Tests (push) Successful in 3m24s
Tests and linters / Tests with -race (push) Successful in 3m32s
All checks were successful
Pre-commit hooks / Pre-commit (push) Successful in 1m18s
Vulncheck / Vulncheck (push) Successful in 1m16s
Build / Build Components (push) Successful in 1m41s
Tests and linters / gopls check (push) Successful in 2m17s
Tests and linters / Run gofumpt (push) Successful in 2m31s
Tests and linters / Lint (push) Successful in 3m9s
Tests and linters / Staticcheck (push) Successful in 3m9s
Tests and linters / Tests (push) Successful in 3m24s
Tests and linters / Tests with -race (push) Successful in 3m32s
Previously, `ln` was only set once, so search has really worked for small number of objects. Fix panic: ``` panic: runtime error: slice bounds out of range [:43690] with capacity 21238 goroutine 6859775 [running]: git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object.(*searchStreamMsgSizeCtrl).Send(0xc001eec8d0, 0xc005734000) git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/transport_splitter.go:173 +0x1f0 git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search/v2.(*streamWriter).WriteIDs(0xc000520320, {0xc00eb1a000, 0x4fd9c, 0x7fd6475a9a68?}) git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search/v2/streamer.go:28 +0x155 git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search.(*uniqueIDWriter).WriteIDs(0xc001386420, {0xc00eb1a000?, 0xc0013ea9c0?, 0x113eef3?}) git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search/util.go:62 +0x202 git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search.(*execCtx).writeIDList(0xc00011aa38?, {0xc00eb1a000?, 0xc001eec9f0?, 0xc0008f4380?}) git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search/exec.go:68 +0x91 git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search.(*execCtx).executeLocal(0xc0008f4380, {0x176c538, 0xc001eec9f0}) git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/search/local.go:18 +0x16b ``` Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
c0221d76e6
commit
d7fcc5ce30
1 changed files with 2 additions and 2 deletions
|
@ -162,13 +162,13 @@ func (s *searchStreamMsgSizeCtrl) Send(resp *object.SearchResponse) error {
|
|||
|
||||
var newResp *object.SearchResponse
|
||||
|
||||
for ln := uint64(len(ids)); ; {
|
||||
for {
|
||||
if newResp == nil {
|
||||
newResp = new(object.SearchResponse)
|
||||
newResp.SetBody(body)
|
||||
}
|
||||
|
||||
cut := min(s.addrAmount, ln)
|
||||
cut := min(s.addrAmount, uint64(len(ids)))
|
||||
|
||||
body.SetIDList(ids[:cut])
|
||||
newResp.SetMetaHeader(resp.GetMetaHeader())
|
||||
|
|
Loading…
Reference in a new issue