mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00:00 
			
		
		
		
	* add redis queue * finished indexer redis queue * add redis vendor * fix vet * Update docs/content/doc/advanced/config-cheat-sheet.en-us.md Co-Authored-By: lunny <xiaolunwen@gmail.com> * switch to go mod * Update required changes for new logging func signatures
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			513 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			513 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package internal
 | 
						|
 | 
						|
import (
 | 
						|
	"math/rand"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
// Retry backoff with jitter sleep to prevent overloaded conditions during intervals
 | 
						|
// https://www.awsarchitectureblog.com/2015/03/backoff.html
 | 
						|
func RetryBackoff(retry int, minBackoff, maxBackoff time.Duration) time.Duration {
 | 
						|
	if retry < 0 {
 | 
						|
		retry = 0
 | 
						|
	}
 | 
						|
 | 
						|
	backoff := minBackoff << uint(retry)
 | 
						|
	if backoff > maxBackoff || backoff < minBackoff {
 | 
						|
		backoff = maxBackoff
 | 
						|
	}
 | 
						|
 | 
						|
	if backoff == 0 {
 | 
						|
		return 0
 | 
						|
	}
 | 
						|
	return time.Duration(rand.Int63n(int64(backoff)))
 | 
						|
}
 |