Skip to content

Load Testing

Load Testing #113

Triggered via pull request November 21, 2023 21:23
Status Failure
Total duration 2m 35s
Artifacts

ci.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

9 errors and 28 warnings
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L160
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:160:35 | 155 | #[instrument(skip(endpoint, requests_per_minute, shadow_tree))] | --------------------------------------------------------------- outer async construct ... 160 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 161 | | let sleep_time = 162 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 163 | | ... | 200 | | }) 201 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async help: consider awaiting this value | 160 ~ ) -> JoinHandle<eyre::Result<()>> { 161 + let sleep_time = 162 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 163 + 164 + let client = reqwest::Client::new(); 165 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 166 + 167 + //TODO: use a more sound approach but for now generate an identity that is unlikely to be in the tree 168 + let invalid_identity = Hash::from(1); 169 + 170 + tokio::spawn(async move { 171 + loop { 172 + let tree_history = 173 + shadow_tree.0.tree_data.tree_history.read().await; 174 + 175 + let historical_tree = tree_history 176 + .iter() 177 + .choose(&mut rand::thread_rng()) 178 + .expect("Could not get historical tree"); 179 + 180 + let historical_root = historical_tree.root(); 181 + 182 + let payload = InclusionProofRequest { 183 + identity_commitment: invalid_identity, 184 + root: Some(historical_root), 185 + }; 186 + 187 + let res = client.post(url.clone()).json(&payload).send().await?; 188 + 189 + if res.status().is_success() { 190 + let proof_response: Option<InclusionProof> = res.json().await?; 191 + if proof_response.is_some() { 192 + tracing::error!("Unexpected proof received") 193 + } 194 + } else { 195 + tracing::error!("Invalid response: {:?}", res.status()); 196 + } 197 + 198 + tokio::time::sleep(sleep_time); 199 + } 200 + }) 201 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L122
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:122:35 | 118 | #[instrument(skip(endpoint, requests_per_minute))] | -------------------------------------------------- outer async construct ... 122 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 123 | | let sleep_time = 124 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 125 | | ... | 152 | | }) 153 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async help: consider awaiting this value | 122 ~ ) -> JoinHandle<eyre::Result<()>> { 123 + let sleep_time = 124 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 125 + 126 + let client = reqwest::Client::new(); 127 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 128 + 129 + //TODO: use a more sound approach but for now generate an identity that is unlikely to be in the tree 130 + let invalid_identity = Hash::from(1); 131 + 132 + tokio::spawn(async move { 133 + loop { 134 + let payload = InclusionProofRequest { 135 + identity_commitment: invalid_identity, 136 + root: None, 137 + }; 138 + 139 + let res = client.post(url.clone()).json(&payload).send().await?; 140 + 141 + if res.status().is_success() { 142 + let proof_response: Option<InclusionProof> = res.json().await?; 143 + if proof_response.is_some() { 144 + tracing::error!("Unexpected proof received") 145 + } 146 + } else { 147 + tracing::error!("Invalid response: {:?}", res.status()); 148 + } 149 + 150 + tokio::time::sleep(sleep_time); 151 + } 152 + }) 153 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L69
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:69:35 | 64 | #[instrument(skip(endpoint, requests_per_minute, shadow_tree))] | --------------------------------------------------------------- outer async construct ... 69 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 70 | | let sleep_time = 71 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 72 | | ... | 115 | | }) 116 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async help: consider awaiting this value | 69 ~ ) -> JoinHandle<eyre::Result<()>> { 70 + let sleep_time = 71 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 72 + 73 + let client = reqwest::Client::new(); 74 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 75 + 76 + tokio::spawn(async move { 77 + loop { 78 + let tree_history = 79 + shadow_tree.0.tree_data.tree_history.read().await; 80 + 81 + let historical_tree = tree_history 82 + .iter() 83 + .choose(&mut rand::thread_rng()) 84 + .expect("Could not get historical tree"); 85 + 86 + let random_identity = historical_tree 87 + .leaves() 88 + .filter(|&leaf| leaf != Hash::ZERO) //TODO: this can be more efficient 89 + .choose(&mut rand::thread_rng()) 90 + .expect("No identities available") 91 + .to_owned(); 92 + 93 + let historical_root = historical_tree.root(); 94 + 95 + let payload = InclusionProofRequest { 96 + identity_commitment: random_identity, 97 + root: Some(historical_root), 98 + }; 99 + 100 + let res = client.post(url.clone()).json(&payload).send().await?; 101 + 102 + if res.status().is_success() { 103 + let proof_response: Option<InclusionProof> = res.json().await?; 104 + if let Some(proof) = proof_response { 105 + tracing::info!("Valid proof received: {:?}", proof); 106 + } else { 107 + tracing::error!("Proof is None"); 108 + } 109 + } else { 110 + tracing::error!("Invalid response: {:?}", res.status()); 111 + } 112 + 113 + tokio::time::sleep(sleep_time); 114 + } 115 + }) 116 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L21
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:21:35 | 16 | #[instrument(skip(endpoint, requests_per_minute, shadow_tree))] | --------------------------------------------------------------- outer async construct ... 21 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 22 | | let sleep_time = 23 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 24 | | ... | 61 | | }) 62 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async = note: `#[deny(clippy::async_yields_async)]` on by default help: consider awaiting this value | 21 ~ ) -> JoinHandle<eyre::Result<()>> { 22 + let sleep_time = 23 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 24 + 25 + let client = reqwest::Client::new(); 26 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 27 + 28 + tokio::spawn(async move { 29 + loop { 30 + let latest_tree = shadow_tree.0.tree_data.tree.read().await; 31 + 32 + let random_identity = latest_tree 33 + .leaves() 34 + .filter(|&leaf| leaf != Hash::ZERO) //TODO: this can be more efficient 35 + .choose(&mut rand::thread_rng()) 36 + .expect("No identities available") 37 + .to_owned(); 38 + 39 + tracing::info!(?random_identity); 40 + 41 + let payload = InclusionProofRequest { 42 + identity_commitment: random_identity, 43 + root: None, 44 + }; 45 + 46 + let res = client.post(url.clone()).json(&payload).send().await?; 47 + 48 + if res.status().is_success() { 49 + let proof_response: Option<InclusionProof> = res.json().await?; 50 + if let Some(proof) = proof_response { 51 + tracing::info!("Valid proof received: {:?}", proof); 52 + } else { 53 + tracing::error!("Proof is None"); 54 + } 55 + } else { 56 + tracing::error!("Invalid response: {:?}", res.status()); 57 + } 58 + 59 + tokio::time::sleep(sleep_time); 60 + } 61 + }) 62 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L160
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:160:35 | 155 | #[instrument(skip(endpoint, requests_per_minute, shadow_tree))] | --------------------------------------------------------------- outer async construct ... 160 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 161 | | let sleep_time = 162 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 163 | | ... | 200 | | }) 201 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async help: consider awaiting this value | 160 ~ ) -> JoinHandle<eyre::Result<()>> { 161 + let sleep_time = 162 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 163 + 164 + let client = reqwest::Client::new(); 165 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 166 + 167 + //TODO: use a more sound approach but for now generate an identity that is unlikely to be in the tree 168 + let invalid_identity = Hash::from(1); 169 + 170 + tokio::spawn(async move { 171 + loop { 172 + let tree_history = 173 + shadow_tree.0.tree_data.tree_history.read().await; 174 + 175 + let historical_tree = tree_history 176 + .iter() 177 + .choose(&mut rand::thread_rng()) 178 + .expect("Could not get historical tree"); 179 + 180 + let historical_root = historical_tree.root(); 181 + 182 + let payload = InclusionProofRequest { 183 + identity_commitment: invalid_identity, 184 + root: Some(historical_root), 185 + }; 186 + 187 + let res = client.post(url.clone()).json(&payload).send().await?; 188 + 189 + if res.status().is_success() { 190 + let proof_response: Option<InclusionProof> = res.json().await?; 191 + if proof_response.is_some() { 192 + tracing::error!("Unexpected proof received") 193 + } 194 + } else { 195 + tracing::error!("Invalid response: {:?}", res.status()); 196 + } 197 + 198 + tokio::time::sleep(sleep_time); 199 + } 200 + }) 201 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L122
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:122:35 | 118 | #[instrument(skip(endpoint, requests_per_minute))] | -------------------------------------------------- outer async construct ... 122 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 123 | | let sleep_time = 124 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 125 | | ... | 152 | | }) 153 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async help: consider awaiting this value | 122 ~ ) -> JoinHandle<eyre::Result<()>> { 123 + let sleep_time = 124 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 125 + 126 + let client = reqwest::Client::new(); 127 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 128 + 129 + //TODO: use a more sound approach but for now generate an identity that is unlikely to be in the tree 130 + let invalid_identity = Hash::from(1); 131 + 132 + tokio::spawn(async move { 133 + loop { 134 + let payload = InclusionProofRequest { 135 + identity_commitment: invalid_identity, 136 + root: None, 137 + }; 138 + 139 + let res = client.post(url.clone()).json(&payload).send().await?; 140 + 141 + if res.status().is_success() { 142 + let proof_response: Option<InclusionProof> = res.json().await?; 143 + if proof_response.is_some() { 144 + tracing::error!("Unexpected proof received") 145 + } 146 + } else { 147 + tracing::error!("Invalid response: {:?}", res.status()); 148 + } 149 + 150 + tokio::time::sleep(sleep_time); 151 + } 152 + }) 153 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L69
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:69:35 | 64 | #[instrument(skip(endpoint, requests_per_minute, shadow_tree))] | --------------------------------------------------------------- outer async construct ... 69 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 70 | | let sleep_time = 71 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 72 | | ... | 115 | | }) 116 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async help: consider awaiting this value | 69 ~ ) -> JoinHandle<eyre::Result<()>> { 70 + let sleep_time = 71 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 72 + 73 + let client = reqwest::Client::new(); 74 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 75 + 76 + tokio::spawn(async move { 77 + loop { 78 + let tree_history = 79 + shadow_tree.0.tree_data.tree_history.read().await; 80 + 81 + let historical_tree = tree_history 82 + .iter() 83 + .choose(&mut rand::thread_rng()) 84 + .expect("Could not get historical tree"); 85 + 86 + let random_identity = historical_tree 87 + .leaves() 88 + .filter(|&leaf| leaf != Hash::ZERO) //TODO: this can be more efficient 89 + .choose(&mut rand::thread_rng()) 90 + .expect("No identities available") 91 + .to_owned(); 92 + 93 + let historical_root = historical_tree.root(); 94 + 95 + let payload = InclusionProofRequest { 96 + identity_commitment: random_identity, 97 + root: Some(historical_root), 98 + }; 99 + 100 + let res = client.post(url.clone()).json(&payload).send().await?; 101 + 102 + if res.status().is_success() { 103 + let proof_response: Option<InclusionProof> = res.json().await?; 104 + if let Some(proof) = proof_response { 105 + tracing::info!("Valid proof received: {:?}", proof); 106 + } else { 107 + tracing::error!("Proof is None"); 108 + } 109 + } else { 110 + tracing::error!("Invalid response: {:?}", res.status()); 111 + } 112 + 113 + tokio::time::sleep(sleep_time); 114 + } 115 + }) 116 + }.await |
an async construct yields a type which is itself awaitable: bin/load_test/scenarios/mod.rs#L21
error: an async construct yields a type which is itself awaitable --> bin/load_test/scenarios/mod.rs:21:35 | 16 | #[instrument(skip(endpoint, requests_per_minute, shadow_tree))] | --------------------------------------------------------------- outer async construct ... 21 | ) -> JoinHandle<eyre::Result<()>> { | ___________________________________^ 22 | | let sleep_time = 23 | | Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 24 | | ... | 61 | | }) 62 | | } | |_^ awaitable value not awaited | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async = note: `#[deny(clippy::async_yields_async)]` on by default help: consider awaiting this value | 21 ~ ) -> JoinHandle<eyre::Result<()>> { 22 + let sleep_time = 23 + Duration::from_micros(MICROSECONDS_IN_MINUTE / requests_per_minute); 24 + 25 + let client = reqwest::Client::new(); 26 + let url = Url::parse(endpoint).expect("Could not parse endpoint"); 27 + 28 + tokio::spawn(async move { 29 + loop { 30 + let latest_tree = shadow_tree.0.tree_data.tree.read().await; 31 + 32 + let random_identity = latest_tree 33 + .leaves() 34 + .filter(|&leaf| leaf != Hash::ZERO) //TODO: this can be more efficient 35 + .choose(&mut rand::thread_rng()) 36 + .expect("No identities available") 37 + .to_owned(); 38 + 39 + tracing::info!(?random_identity); 40 + 41 + let payload = InclusionProofRequest { 42 + identity_commitment: random_identity, 43 + root: None, 44 + }; 45 + 46 + let res = client.post(url.clone()).json(&payload).send().await?; 47 + 48 + if res.status().is_success() { 49 + let proof_response: Option<InclusionProof> = res.json().await?; 50 + if let Some(proof) = proof_response { 51 + tracing::info!("Valid proof received: {:?}", proof); 52 + } else { 53 + tracing::error!("Proof is None"); 54 + } 55 + } else { 56 + tracing::error!("Invalid response: {:?}", res.status()); 57 + } 58 + 59 + tokio::time::sleep(sleep_time); 60 + } 61 + }) 62 + }.await |
Lint
Clippy had exited with the 101 exit code
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L198
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:198:13 | 198 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them help: use `let _ = ...` to ignore the resulting value | 198 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L150
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:150:13 | 150 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them help: use `let _ = ...` to ignore the resulting value | 150 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L113
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:113:13 | 113 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them help: use `let _ = ...` to ignore the resulting value | 113 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L59
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:59:13 | 59 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them = note: `#[warn(unused_must_use)]` on by default help: use `let _ = ...` to ignore the resulting value | 59 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L198
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:198:13 | 198 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them help: use `let _ = ...` to ignore the resulting value | 198 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L150
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:150:13 | 150 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them help: use `let _ = ...` to ignore the resulting value | 150 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L113
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:113:13 | 113 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them help: use `let _ = ...` to ignore the resulting value | 113 | let _ = tokio::time::sleep(sleep_time); | +++++++
unused `tokio::time::Sleep` that must be used: bin/load_test/scenarios/mod.rs#L59
warning: unused `tokio::time::Sleep` that must be used --> bin/load_test/scenarios/mod.rs:59:13 | 59 | tokio::time::sleep(sleep_time); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: futures do nothing unless you `.await` or poll them = note: `#[warn(unused_must_use)]` on by default help: use `let _ = ...` to ignore the resulting value | 59 | let _ = tokio::time::sleep(sleep_time); | +++++++
function `wait_until_tas_is_synced` is never used: bin/load_test/utils.rs#L67
warning: function `wait_until_tas_is_synced` is never used --> bin/load_test/utils.rs:67:14 | 67 | pub async fn wait_until_tas_is_synced(tas_endpoint: &str) -> eyre::Result<()> { | ^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
function `wait_until_tas_is_synced` is never used: bin/load_test/utils.rs#L67
warning: function `wait_until_tas_is_synced` is never used --> bin/load_test/utils.rs:67:14 | 67 | pub async fn wait_until_tas_is_synced(tas_endpoint: &str) -> eyre::Result<()> { | ^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
unused import: `utils::ShadowTree`: bin/load_test/main.rs#L7
warning: unused import: `utils::ShadowTree` --> bin/load_test/main.rs:7:5 | 7 | use utils::ShadowTree; | ^^^^^^^^^^^^^^^^^
unused import: `once_cell::sync::OnceCell`: bin/load_test/main.rs#L6
warning: unused import: `once_cell::sync::OnceCell` --> bin/load_test/main.rs:6:5 | 6 | use once_cell::sync::OnceCell; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
unused import: `utils::ShadowTree`: bin/load_test/main.rs#L7
warning: unused import: `utils::ShadowTree` --> bin/load_test/main.rs:7:5 | 7 | use utils::ShadowTree; | ^^^^^^^^^^^^^^^^^
unused import: `once_cell::sync::OnceCell`: bin/load_test/main.rs#L6
warning: unused import: `once_cell::sync::OnceCell` --> bin/load_test/main.rs:6:5 | 6 | use once_cell::sync::OnceCell; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
very complex type used. Consider factoring parts into `type` definitions: src/state_bridge/service.rs#L96
warning: very complex type used. Consider factoring parts into `type` definitions --> src/state_bridge/service.rs:96:10 | 96 | ) -> Result< | __________^ 97 | | Vec<JoinHandle<Result<(), StateBridgeError<L1M, L2M>>>>, 98 | | StateBridgeError<L1M, L2M>, 99 | | > { | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity = note: `#[warn(clippy::type_complexity)]` on by default
very complex type used. Consider factoring parts into `type` definitions: src/state_bridge/service.rs#L96
warning: very complex type used. Consider factoring parts into `type` definitions --> src/state_bridge/service.rs:96:10 | 96 | ) -> Result< | __________^ 97 | | Vec<JoinHandle<Result<(), StateBridgeError<L1M, L2M>>>>, 98 | | StateBridgeError<L1M, L2M>, 99 | | > { | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity = note: `#[warn(clippy::type_complexity)]` on by default
unused import: `FuturesOrdered`: src/tree/tree_updater.rs#L8
warning: unused import: `FuturesOrdered` --> src/tree/tree_updater.rs:8:23 | 8 | use futures::stream::{FuturesOrdered, FuturesUnordered}; | ^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
unused import: `FuturesOrdered`: src/tree/tree_updater.rs#L8
warning: unused import: `FuturesOrdered` --> src/tree/tree_updater.rs:8:23 | 8 | use futures::stream::{FuturesOrdered, FuturesUnordered}; | ^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
Lint
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1, actions-rs/[email protected], actions-rs/cargo@v1, actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
Lint
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Lint
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Lint
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Lint
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Test
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1, actions-rs/cargo@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
Test
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Test
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Test
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Test
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/