feat: Exponential backoff

This commit is contained in:
Elijah McMorris 2024-09-19 01:51:13 -07:00
parent 200d5a0377
commit 091bb50a7e
Signed by: NexVeridian
SSH key fingerprint: SHA256:bsA1SKZxuEcEVHAy3gY1HUeM5ykRJl0U0kQHQn0hMg8
8 changed files with 24 additions and 15 deletions

View file

@ -1,5 +1,5 @@
# Contributing code # Contributing code
- Run `make precommit` - Run `make precommit` or `make check` if using nix flakes
# Dev Install # Dev Install
## Dev Containers ## Dev Containers

12
Cargo.lock generated
View file

@ -2272,9 +2272,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]] [[package]]
name = "pest" name = "pest"
version = "2.7.12" version = "2.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9"
dependencies = [ dependencies = [
"memchr", "memchr",
"thiserror", "thiserror",
@ -4125,9 +4125,9 @@ dependencies = [
[[package]] [[package]]
name = "unicode-script" name = "unicode-script"
version = "0.5.6" version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f"
[[package]] [[package]]
name = "unicode-security" name = "unicode-security"
@ -4147,9 +4147,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.2.5" version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]] [[package]]
name = "untrusted" name = "untrusted"

View file

@ -20,3 +20,10 @@ precommit:
cargo fmt cargo fmt
cargo t cargo t
cargo clippy --fix --allow-dirty cargo clippy --fix --allow-dirty
check:
rustup update
cargo update
nix flake update
nix flake check
cargo clippy --fix --allow-dirty

View file

@ -11,7 +11,7 @@ services:
- $DB_USER - $DB_USER
- --pass - --pass
- $DB_PASSWORD - $DB_PASSWORD
- file:/data/surrealdb - surrealkv:data/surrealdb
restart: always restart: always
deploy: deploy:
resources: resources:

View file

@ -11,7 +11,7 @@ services:
- $DB_USER - $DB_USER
- --pass - --pass
- $DB_PASSWORD - $DB_PASSWORD
- file:/data/surrealdb - surrealkv:data/surrealdb
restart: always restart: always
deploy: deploy:
resources: resources:

6
flake.lock generated
View file

@ -39,11 +39,11 @@
"rust-analyzer-src": [] "rust-analyzer-src": []
}, },
"locked": { "locked": {
"lastModified": 1726641202, "lastModified": 1726727555,
"narHash": "sha256-NrSmOWnr0bIudOLwXd7UwspaHCGwVp8F0jed+nleWpI=", "narHash": "sha256-WAYoFXry7bU3UXCFklX6tBOfBdZUHi+MeIk1JxUKNEo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "59e6cc52c6242800bb448c5a2b6427bd949385ad", "rev": "3b974166133158907839fe20147e11696fade644",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -38,7 +38,7 @@ async fn main() -> Result<(), Error> {
None::<Surreal<Client>>, None::<Surreal<Client>>,
reader, reader,
Some(pb.clone()), Some(pb.clone()),
1_000, 100,
1_000, 1_000,
) )
.await?; .await?;

View file

@ -75,6 +75,7 @@ impl CreateVersion {
tokio::spawn(async move { tokio::spawn(async move {
let mut retries = 0; let mut retries = 0;
loop { loop {
match dbo { match dbo {
Some(ref db) => { Some(ref db) => {
@ -93,11 +94,12 @@ impl CreateVersion {
} }
} }
if retries >= 60 * 10 { // Exponential backoff with cap at 60 seconds
if retries == 30 {
panic!("Failed to create entities, too many retries"); panic!("Failed to create entities, too many retries");
} }
sleep(Duration::from_millis(250) * 2_u32.pow(retries.min(8))).await;
retries += 1; retries += 1;
sleep(Duration::from_millis(250)).await;
} }
}) })
} }