Skip to content

fix: use int64 in publisher delay #19457

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

Merged
merged 1 commit into from
Aug 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions cryptorand/numbers.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ func Int63() (int64, error) {
return rng.Int63(), cs.err
}

// Int63n returns a non-negative integer in [0,maxVal) as an int64.
func Int63n(maxVal int64) (int64, error) {
rng, cs := secureRand()
return rng.Int63n(maxVal), cs.err
}

// Intn returns a non-negative integer in [0,maxVal) as an int.
func Intn(maxVal int) (int, error) {
rng, cs := secureRand()
Expand Down
21 changes: 21 additions & 0 deletions cryptorand/numbers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,27 @@ func TestInt63(t *testing.T) {
}
}

func TestInt63n(t *testing.T) {
t.Parallel()

for i := 0; i < 20; i++ {
v, err := cryptorand.Int63n(100)
require.NoError(t, err, "unexpected error from Int63n")
t.Logf("value: %v <- random?", v)
require.GreaterOrEqual(t, v, int64(0), "values must be positive")
require.Less(t, v, int64(100), "values must be less than 100")
}

// Ensure Int63n works for int larger than 32 bits
_, err := cryptorand.Int63n(1 << 35)
require.NoError(t, err, "expected Int63n to work for 64-bit int")

// Expect a panic if max is negative
require.PanicsWithValue(t, "invalid argument to Int63n", func() {
cryptorand.Int63n(0)
})
Comment on lines +37 to +40
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0 isn't negative

}

func TestIntn(t *testing.T) {
t.Parallel()

Expand Down
4 changes: 2 additions & 2 deletions enterprise/coderd/usage/publisher.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ func (p *tallymanPublisher) Start() error {
if p.initialDelay <= 0 {
// Pick a random time between tallymanPublishInitialMinimumDelay and
// tallymanPublishInterval.
maxPlusDelay := int(tallymanPublishInterval - tallymanPublishInitialMinimumDelay)
plusDelay, err := cryptorand.Intn(maxPlusDelay)
maxPlusDelay := tallymanPublishInterval - tallymanPublishInitialMinimumDelay
plusDelay, err := cryptorand.Int63n(int64(maxPlusDelay))
if err != nil {
return xerrors.Errorf("could not generate random start delay: %w", err)
}
Expand Down
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy