-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(tsi1/partition/test): fix data races in test code (#57) #25338
Conversation
* fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few suggestions. Perhaps put them into another PR if you want to cherry-pick them to other branches.
tsdb/index/tsi1/partition.go
Outdated
func (p *Partition) SetMaxLogFileSize(new int64) (old int64) { | ||
p.mu.Lock() | ||
old = p.maxLogFileSize | ||
p.maxLogFileSize = new |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can do this more idiomatically with
old, p.maxLogFileSize = p.maxLogFileSize, new
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Sounds good
|
||
var err error | ||
if p.fileSet == nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice
tsdb/index/tsi1/partition.go
Outdated
|
||
// Close log files. | ||
var err error | ||
for _, f := range p.fileSet.files { | ||
if localErr := f.Close(); localErr != nil { | ||
err = localErr |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use a []error
and errors.Join()
here to return all the errors.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh thats a really cool error handling feature. Will do 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Small change to the use of errrors.Join
tsdb/index/tsi1/partition.go
Outdated
@@ -389,7 +388,7 @@ func (p *Partition) Close() error { | |||
var err error | |||
for _, f := range p.fileSet.files { | |||
if localErr := f.Close(); localErr != nil { | |||
err = localErr | |||
err = errors.Join(err, localErr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
errors.Join
ignores nil errors, so no test for not nil is necessary. The code as it is written will make nested errors; the best thing to do is use a slice.
See here for an example
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors closes #25341 --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f)
* fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f)
…25345) * feat: add hook for optimizing series reads based on authorizer (#25207) * fix(tsi1/partition/test): fix data races in test code (#57) (#25338) * fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f) --------- Co-authored-by: Geoffrey Wossum <[email protected]>
…25344) * fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors closes #25341 --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f)
…25344) * fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors closes #25341 --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f) (cherry picked from commit b88e74e) closes #25342
* fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors closes #25341 --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f) (cherry picked from commit b88e74e) closes #25342
#25352) * fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors closes #25341 --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f) (cherry picked from commit b88e74e) closes #25342
… (#25438) * feat: add hook for optimizing series reads based on authorizer (#25207) * fix(tsi1/partition/test): fix data races in test code (#57) (#25338) * fix(tsi1/partition/test): fix data races in test code (#57) * fix(tsi1/partition/test): fix data races in test code This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged. (cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f) * feat: modify error handling to be more idiomatic closes #24042 * fix: errors.Join() filters nil errors --------- Co-authored-by: Phil Bracikowski <[email protected]> (cherry picked from commit 5c9e45f) * fix(ci): Update test_pkgs_64bit image to non-eol ubuntu image (#25354) * fix(ci): Update test_pkgs_64bit image to non-eol ubuntu image * fix: trying edge img * fix(ci): update ubuntu image in ci Update test_pkgs_64bit image to non-eol ubuntu image Please see: discuss.circleci.com/t/linux-image-deprecations-and-eol-for-2024/50177 closes #25355 (cherry picked from commit fdf0df7) --------- Co-authored-by: Geoffrey Wossum <[email protected]>
This PR is like #24613 but solves it with a setter method for MaxLogFileSize which allows unexporting that value and MaxLogFileAge. There are actually two places locks were needed in test code. The behavior of production code is unchanged.
(cherry picked from commit f0235c4daf4b97769db932f7346c1d3aecf57f8f)
Closes #
Describe your proposed changes here.