Skip to content

Fix update propagation by increasing TTL in ping tests #1596

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

Open
wants to merge 49 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
13ec8e4
fix: actually perform gw connections in parallel
iduartgomez May 11, 2025
3317c0a
fix: attempt to connect more frequently
iduartgomez May 11, 2025
00ef297
wip: eventual consistency ping test
iduartgomez May 11, 2025
0b831e1
Implement retry logic for update propagation
devin-ai-integration[bot] May 12, 2025
eaeebe3
Fix compilation errors in update.rs
devin-ai-integration[bot] May 12, 2025
c9df4d9
Fix connection_manager.send method call in RetryingBroadcast state
devin-ai-integration[bot] May 12, 2025
a092d44
Fix retry broadcast implementation to use notify_op_change instead of…
devin-ai-integration[bot] May 13, 2025
9efd576
Remove unused broadcasting variable
devin-ai-integration[bot] May 13, 2025
c32d059
Add test for retry logic implementation
devin-ai-integration[bot] May 13, 2025
651c552
Fix import warnings in retry test
devin-ai-integration[bot] May 13, 2025
de522b5
Fix lifetime issues and unused variables in retry test
devin-ai-integration[bot] May 13, 2025
43f720e
Implement proper Delta update handling in update_contract
devin-ai-integration[bot] May 13, 2025
f736a74
Fix imports for StoreResponse in update_contract
devin-ai-integration[bot] May 13, 2025
ebe0231
Always use Delta updates in update_contract for better merging
devin-ai-integration[bot] May 13, 2025
cf80148
Fix error handling to use MaxRetriesExceeded instead of custom MaxRet…
devin-ai-integration[bot] May 13, 2025
6e50495
Fix compilation issues in update.rs
devin-ai-integration[bot] May 13, 2025
fa70206
Add improved forwarding test with retry logic
devin-ai-integration[bot] May 13, 2025
2151593
Implement retry logic for update propagation
devin-ai-integration[bot] May 13, 2025
fb51f95
Fix API usage in run_app_improved_forwarding.rs
devin-ai-integration[bot] May 13, 2025
cf56dc4
Fix WebApi instance handling in run_app_improved_forwarding.rs
devin-ai-integration[bot] May 13, 2025
d06eea3
Fix update propagation by increasing TTL in ping tests
devin-ai-integration[bot] May 13, 2025
b61f191
Update process_ping_update TTL values to match contract TTL
devin-ai-integration[bot] May 13, 2025
105e22a
Increase wait times for update propagation in improved_forwarding test
devin-ai-integration[bot] May 13, 2025
f74c134
Fix improved_forwarding test to retrieve current state before updates
devin-ai-integration[bot] May 13, 2025
9af93fe
Fix Option handling in improved_forwarding test
devin-ai-integration[bot] May 13, 2025
a80737a
Add detailed logging and improve test reliability
devin-ai-integration[bot] May 13, 2025
04ce888
Add detailed logging and use State updates instead of Delta updates
devin-ai-integration[bot] May 13, 2025
600fcd7
Configure blocked peers in improved_forwarding test to force gateway …
devin-ai-integration[bot] May 13, 2025
20fe0ed
Fix blocked peers configuration in improved_forwarding test
devin-ai-integration[bot] May 13, 2025
0c0ba7d
Fix improved_forwarding test by adding manual node startup with block…
devin-ai-integration[bot] May 13, 2025
d3bdc4d
Increase node initialization wait time to 30 seconds
devin-ai-integration[bot] May 13, 2025
fd01553
Deploy contract to Gateway node instead of Node1 for improved stability
devin-ai-integration[bot] May 13, 2025
29a139a
Add WebSocket connection retry mechanism to improve test reliability
devin-ai-integration[bot] May 13, 2025
a26eeb8
Add missing imports for WebSocketStream, MaybeTlsStream, and TcpStream
devin-ai-integration[bot] May 13, 2025
5321593
Use Delta updates instead of State updates for improved propagation
devin-ai-integration[bot] May 13, 2025
b75edf8
Fix StateDelta import path
devin-ai-integration[bot] May 13, 2025
51ed0f0
Update Cargo.lock with new dependencies
devin-ai-integration[bot] May 13, 2025
3f7b9d1
Merge remote-tracking branch 'origin/debug-update-issues' into devin/…
devin-ai-integration[bot] May 13, 2025
7d40c17
Fix compilation issues after merging debug-update-issues branch
devin-ai-integration[bot] May 13, 2025
bf7daed
Fix process_ping_update function to handle Vec<DateTime<Utc>> after m…
devin-ai-integration[bot] May 13, 2025
08feadb
Add better error handling for Ping deserialization
devin-ai-integration[bot] May 13, 2025
c41e4a1
Refactor: Use existing Backoff utility instead of custom implementation
devin-ai-integration[bot] May 13, 2025
210d10d
Fix formatting issues in ping tests
devin-ai-integration[bot] May 13, 2025
d821200
Fix clippy warning in update.rs
devin-ai-integration[bot] May 13, 2025
19ba343
Fix formatting issues in update.rs
devin-ai-integration[bot] May 13, 2025
608d875
Fix formatting issues in run_app.rs
devin-ai-integration[bot] May 13, 2025
9b6e5f8
Fix unused imports in test files to resolve CI failures
devin-ai-integration[bot] May 13, 2025
c764efc
Fix missing imports in test files to resolve CI failures
devin-ai-integration[bot] May 13, 2025
c76fc87
Fix update propagation with retry mechanism and state retrieval befor…
devin-ai-integration[bot] May 14, 2025
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
58 changes: 17 additions & 41 deletions apps/freenet-ping/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 24 additions & 8 deletions apps/freenet-ping/app/src/ping_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,12 @@ impl PingStats {
self.sent_count += 1;
}

pub fn record_received(&mut self, peer: String, time: DateTime<Utc>) {
pub fn record_received(&mut self, peer: String, time: Vec<DateTime<Utc>>) {
*self.received_counts.entry(peer.clone()).or_insert(0) += 1;
self.last_updates.insert(peer, time);
// Use the most recent timestamp (first element since they're sorted newest first)
if let Some(latest) = time.first() {
self.last_updates.insert(peer, *latest);
}
}
}

Expand Down Expand Up @@ -85,9 +88,17 @@ pub async fn wait_for_get_response(
return Err("unexpected key".into());
}

let old_ping = serde_json::from_slice::<Ping>(&state)?;
tracing::info!(num_entries = %old_ping.len(), "old state fetched successfully!");
return Ok(old_ping);
match serde_json::from_slice::<Ping>(&state) {
Ok(ping) => {
tracing::info!(num_entries = %ping.len(), "old state fetched successfully!");
return Ok(ping);
}
Err(e) => {
tracing::error!("Failed to deserialize Ping: {}", e);
tracing::error!("Raw state data: {:?}", String::from_utf8_lossy(&state));
return Err(Box::new(e));
}
};
}
Ok(Ok(other)) => {
tracing::warn!("Unexpected response while waiting for get: {}", other);
Expand Down Expand Up @@ -218,9 +229,14 @@ pub async fn run_ping_client(

let updates = local_state.merge(new_ping, parameters.ttl);

for (name, update_time) in updates.into_iter() {
tracing::info!("{} last updated at {}", name, update_time);
stats.record_received(name, update_time);
for (name, timestamps) in updates.into_iter() {
if !timestamps.is_empty() {
// Use the newest timestamp for logging
if let Some(last) = timestamps.first() {
tracing::info!("{} last updated at {}", name, last);
}
stats.record_received(name, timestamps);
}
}
Ok(())
};
Expand Down
Loading
Loading