Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
1337cda
test: enable ubertest in CI to debug issues
iduartgomez Oct 9, 2025
40c6bf4
test improvements
netsirius Oct 11, 2025
bea3d82
remove unnecessary sleep
netsirius Oct 11, 2025
79be04c
Merge branch 'main' into fix/uber-test-debug-1932
iduartgomez Oct 13, 2025
bd08c0c
add a simplified room creation test
netsirius Oct 13, 2025
cbdfbc2
Merge main - includes priority_select fix for waker registration
iduartgomez Oct 15, 2025
86b41bc
debug: add enhanced logging for PUT operation path
iduartgomez Oct 15, 2025
92ac223
debug: add message flow logging to track PUT delivery
iduartgomez Oct 16, 2025
ec0c867
fix: route messages with target peers as outbound in handle_notificat…
iduartgomez Oct 16, 2025
f4deff6
test: add comprehensive PrioritySelectFuture unit tests with 100x str…
iduartgomez Oct 16, 2025
3cfc3b6
docs: add comprehensive ubertest debugging session notes
iduartgomez Oct 16, 2025
d36d8f8
test: add test that reproduces lost wakeup race condition (#1932)
iduartgomez Oct 17, 2025
90f7c90
fix: resolve lost wakeup race condition in network event loop (#1932)
iduartgomez Oct 17, 2025
75b0c0b
feat: convert HandshakeHandler to Stream-based architecture
iduartgomez Oct 19, 2025
fb02e9a
fix: resolve priority starvation in HandshakeEventStream poll_next
iduartgomez Oct 19, 2025
8f3cd34
feat: add JSON logging support and fix TOCTOU race in connection mana…
iduartgomez Oct 19, 2025
b07bda4
fix: correct PUT operation message routing to prevent self-targeting …
iduartgomez Oct 19, 2025
a41ea68
chore: reduce debug trace log levels from warn to debug
iduartgomez Oct 19, 2025
b10c8fa
Merge branch 'main' into fix/uber-test-debug-1932
sanity Oct 20, 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
14 changes: 14 additions & 0 deletions Cargo.lock

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

3 changes: 2 additions & 1 deletion crates/core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,14 @@ opentelemetry = "0.31"
opentelemetry-jaeger = { features = ["collector_client", "isahc", "rt-tokio"], optional = true, version = "0.22" }
tracing = { version = "0.1" }
tracing-opentelemetry = { optional = true, version = "0.32.0" }
tracing-subscriber = { optional = true, version = "0.3" }
tracing-subscriber = { optional = true, version = "0.3", features = ["json"] }
opentelemetry-otlp = { optional = true, version = "0.31.0" }
opentelemetry_sdk = { optional = true, version = "0.31", features = ["rt-tokio"] }

# internal deps
freenet-stdlib = { features = ["net"], workspace = true }
console-subscriber = { version = "0.4.1", optional = true }
tokio-stream = "0.1.17"

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["sysinfoapi"] }
Expand Down
19 changes: 15 additions & 4 deletions crates/core/src/node/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -391,15 +391,21 @@ async fn report_result(
executor_callback: Option<ExecutorToEventLoopChannel<Callback>>,
event_listener: &mut dyn NetEventRegister,
) {
// Add UPDATE-specific debug logging at the start
// Log all operation result reporting
if let Some(tx_id) = tx {
if matches!(tx_id.transaction_type(), TransactionType::Update) {
tracing::debug!("report_result called for UPDATE transaction {}", tx_id);
}
tracing::info!(
tx = %tx_id,
tx_type = ?tx_id.transaction_type(),
"report_result called - processing operation result"
);
}

match op_result {
Ok(Some(op_res)) => {
tracing::info!(
tx = ?tx,
"Operation result ready - will send to result router"
);
// Log specifically for UPDATE operations
if let crate::operations::OpEnum::Update(ref update_op) = op_res {
tracing::debug!(
Expand All @@ -412,12 +418,17 @@ async fn report_result(
// Send to result router
if let Some(transaction) = tx {
let host_result = op_res.to_host_result();
tracing::info!(
tx = %transaction,
"Sending operation result to result router for client delivery"
);
let router_tx_clone = op_manager.result_router_tx.clone();
let event_notifier = op_manager.to_event_listener.clone();

// Spawn fire-and-forget task to avoid blocking report_result()
// while still guaranteeing message delivery
tokio::spawn(async move {
tracing::debug!(tx = %transaction, "Sending to result router channel");
if let Err(e) = router_tx_clone.send((transaction, host_result)).await {
tracing::error!(
"CRITICAL: Result router channel closed - dual-path delivery broken. \
Expand Down
1,734 changes: 863 additions & 871 deletions crates/core/src/node/network_bridge/handshake.rs

Large diffs are not rendered by default.

Loading
Loading