Skip to content
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

feat: add display info to yamux #6904

Merged

Conversation

hansieodendaal
Copy link
Contributor

@hansieodendaal hansieodendaal commented Apr 1, 2025

Description

Added display info to yamux worker.

Motivation and Context

We need more info on yamux stream errors.

How Has This Been Tested?

System-level testing

This

2025-04-01 16:02:10.204741000 [comms::multiplexing::yamux] DEBUG 0 Incoming peer substream ended.

now changed to

2025-04-01 16:03:58.580227900 [comms::multiplexing::yamux] DEBUG 2 Incoming peer (PeerConnectionInfo(
public_key: 248e3bcc174d0a8e63a6fe611dcb4ecb814edd84b5503be3edbe5a79475ae760, node_id: 
074b18bfd54e1680907e7da588, features: PeerFeatures(MESSAGE_PROPAGATION | DHT_STORE_FORWARD), 
user_agent: tari/basenode/1.13.0-rc.0)) substream ended.

What process can a PR reviewer use to test or verify this change?

Code review.

Breaking Changes

  • None
  • Requires data directory on base node to be deleted
  • Requires hard fork
  • Other - Please specify

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Enhanced the connection upgrade process by integrating additional connection metadata, including public key, features, and user agent, providing clearer diagnostics and logging for better visibility during peer communication.
  • Refactor

    • Streamlined connection handling to seamlessly incorporate the enriched metadata throughout the connection upgrade workflow.
  • Bug Fixes

    • Removed the shutdown_signal from the Inbound struct initialization, refining its shutdown management behavior.

Added display info to yamux worker
Copy link
Contributor

coderabbitai bot commented Apr 1, 2025

Walkthrough

This pull request introduces a new structure, PeerConnectionInfo, which encapsulates optional peer connection details (public key, features, and user agent) and implements the Display trait for formatted output. The change propagates through several modules—connection manager components (common, dialer, listener, and mod), Yamux, and test utilities—by updating method signatures and passing the new structure in place of previous simpler calls. Logging and tests have also been adjusted to reflect the inclusion of peer connection information.

Changes

File(s) Change Summary
comms/.../connection_manager/common.rs, dialer.rs, listener.rs, mod.rs Added new struct PeerConnectionInfo with optional fields and a Display implementation; integrated it into connection flows and re-exported it for external use.
comms/.../multiplexing/yamux.rs, comms/.../test_utils/transport.rs Updated upgrade_connection and spawn_incoming_stream_worker methods to accept PeerConnectionInfo; added a field in YamuxWorker for this information and revised logging and tests accordingly.
comms/.../pipeline/inbound.rs Removed shutdown_signal from the Inbound struct's new method signature, altering its instantiation.

Sequence Diagram(s)

sequenceDiagram
    participant Peer as Dialer/Listener
    participant Yamux as Yamux::upgrade_connection
    participant Worker as YamuxWorker

    Peer->>Yamux: Create PeerConnectionInfo with connection details
    Yamux-->>Peer: Initiate connection upgrade with info
    Yamux->>Worker: Spawn incoming stream worker (passing PeerConnectionInfo)
    Worker->>Worker: Log and manage connection using peer info
Loading

Suggested reviewers

  • SWvheerden

Poem

In the meadow of code, I hop with delight,
A new PeerConnectionInfo shines oh so bright,
Upgraded connections dance in a rhythmic trance,
Yamux and workers now advance their stance,
I’m a rabbit with bytes—bounding through change in flight!


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3550a25 and 355a3c4.

📒 Files selected for processing (2)
  • comms/core/src/multiplexing/yamux.rs (19 hunks)
  • comms/core/src/pipeline/inbound.rs (0 hunks)
💤 Files with no reviewable changes (1)
  • comms/core/src/pipeline/inbound.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • comms/core/src/multiplexing/yamux.rs
⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: ci
  • GitHub Check: test (nextnet, nextnet)
  • GitHub Check: test (testnet, esmeralda)
  • GitHub Check: test (mainnet, stagenet)
  • GitHub Check: Cucumber tests / FFI
  • GitHub Check: Cucumber tests / Base Layer
  • GitHub Check: cargo check with stable

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
comms/core/src/connection_manager/listener.rs (1)

420-426: Good implementation of PeerConnectionInfo

The creation and usage of PeerConnectionInfo look good. The struct is populated with appropriate information from the authenticated peer and correctly passed to Yamux::upgrade_connection.

Consider optimizing the repeated cloning of valid_peer_identity:

- let peer_connection_info = PeerConnectionInfo {
-     public_key: Some(authenticated_public_key.clone()),
-     features: Some(valid_peer_identity.clone().claim.features),
-     user_agent: Some(valid_peer_identity.clone().metadata.user_agent.clone()),
- };
+ let peer_connection_info = PeerConnectionInfo {
+     public_key: Some(authenticated_public_key.clone()),
+     features: Some(valid_peer_identity.claim.features),
+     user_agent: Some(valid_peer_identity.metadata.user_agent.clone()),
+ };
comms/core/src/connection_manager/common.rs (1)

61-72: Display implementation can be optimized

The Display implementation works correctly but contains unnecessary cloning operations that could impact performance.

impl Display for PeerConnectionInfo {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        write!(
            f,
            "PeerConnectionInfo(public_key: {}, node_id: {}, features: {}, user_agent: {})",
-           self.public_key.clone().unwrap_or_default().to_hex(),
-           NodeId::from_public_key(&self.public_key.clone().unwrap_or_default()),
-           self.features.unwrap_or_default(),
-           self.user_agent.clone().unwrap_or_default()
+           self.public_key.as_ref().unwrap_or(&CommsPublicKey::default()).to_hex(),
+           NodeId::from_public_key(self.public_key.as_ref().unwrap_or(&CommsPublicKey::default())),
+           self.features.unwrap_or_default(),
+           self.user_agent.as_deref().unwrap_or_default()
        )
    }
}

This optimization:

  1. Uses as_ref() instead of clone() for public_key to avoid unnecessary cloning
  2. Uses as_deref() for user_agent to convert Option<String> to Option<&str> without cloning
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f1451f5 and 5a57a86.

📒 Files selected for processing (6)
  • comms/core/src/connection_manager/common.rs (2 hunks)
  • comms/core/src/connection_manager/dialer.rs (2 hunks)
  • comms/core/src/connection_manager/listener.rs (2 hunks)
  • comms/core/src/connection_manager/mod.rs (1 hunks)
  • comms/core/src/multiplexing/yamux.rs (18 hunks)
  • comms/core/src/test_utils/transport.rs (2 hunks)
🧰 Additional context used
🧬 Code Definitions (4)
comms/core/src/connection_manager/listener.rs (1)
comms/core/src/multiplexing/yamux.rs (1)
  • upgrade_connection (53-78)
comms/core/src/connection_manager/common.rs (3)
comms/core/src/connection_manager/manager.rs (1)
  • fmt (84-104)
comms/core/src/peer_manager/peer.rs (1)
  • fmt (290-333)
comms/core/src/peer_manager/node_id.rs (1)
  • from_public_key (86-88)
comms/core/src/connection_manager/dialer.rs (1)
comms/core/src/multiplexing/yamux.rs (1)
  • upgrade_connection (53-78)
comms/core/src/test_utils/transport.rs (1)
comms/core/src/multiplexing/yamux.rs (1)
  • upgrade_connection (53-78)
⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: cargo check with stable
  • GitHub Check: Cucumber tests / Base Layer
  • GitHub Check: Cucumber tests / FFI
  • GitHub Check: test (testnet, esmeralda)
  • GitHub Check: test (nextnet, nextnet)
  • GitHub Check: test (mainnet, stagenet)
  • GitHub Check: ci
🔇 Additional comments (28)
comms/core/src/connection_manager/mod.rs (1)

37-37: Good addition: Exposing PeerConnectionInfo entity

This addition correctly exports the new PeerConnectionInfo struct from the common module, making it available to other modules that import from connection_manager. This is consistent with the PR objective to enhance stream error display information.

comms/core/src/test_utils/transport.rs (3)

26-26: Import updated correctly

The import statement has been properly updated to include the new PeerConnectionInfo struct.


42-46: Test initialization looks good

The test code correctly initializes the PeerConnectionInfo with all fields set to None, which is appropriate for test cases.


47-49: Function call updated appropriately

The calls to Yamux::upgrade_connection have been correctly updated to include the new peer_connection_info parameter, with the first call using a cloned instance and the second using the original.

comms/core/src/connection_manager/listener.rs (2)

52-52: Import addition looks good

The import for PeerConnectionInfo has been correctly added to the file.


415-415: Proper key clone added

The authenticated_public_key is now correctly cloned when passed to create_or_update_peer_from_validated_peer_identity, ensuring the original value remains available for subsequent use.

comms/core/src/connection_manager/common.rs (2)

25-26: Import additions look good

The imports for Display, Formatter, and Hex have been correctly added to support the new functionality.


54-59: Well-structured PeerConnectionInfo definition

The PeerConnectionInfo struct is well designed with appropriate optional fields for peer connection details. The use of Option types is a good choice for cases where some information may not be available.

comms/core/src/connection_manager/dialer.rs (2)

48-48: Appropriate import added for PeerConnectionInfo

The import of PeerConnectionInfo is correctly added to the existing imports.


470-476: Well-structured use of PeerConnectionInfo

The PeerConnectionInfo structure is properly instantiated with the available peer data and passed to the Yamux::upgrade_connection method. This enhances the contextual information available during connection establishment and subsequent error handling.

comms/core/src/multiplexing/yamux.rs (18)

36-36: Import correctly updated for PeerConnectionInfo

The import statement has been appropriately updated to include PeerConnectionInfo.


53-57: Method signature properly updated

The upgrade_connection method signature has been correctly updated to accept the new PeerConnectionInfo parameter.


70-71: Parameter correctly passed to worker

The peer_connection_info parameter is properly forwarded to the spawn_incoming_stream_worker method.


82-86: Worker method signature properly updated

The spawn_incoming_stream_worker method signature has been correctly updated to accept the peer_connection_info parameter.


92-92: New parameter properly passed to YamuxWorker constructor

The peer_connection_info parameter is correctly passed to the YamuxWorker::new method.


245-245: New field added to YamuxWorker struct

The YamuxWorker struct has been correctly updated with the new peer_connection_info field.


255-255: Worker constructor parameter added

The YamuxWorker::new method signature has been properly updated to accept the peer_connection_info parameter.


262-262: Field assignment correctly implemented

The peer_connection_info parameter is properly assigned to the struct field.


274-278: Improved logging with connection context

The log message now includes peer connection information, which will help with debugging connection issues by providing more context in the logs.


286-286: Enhanced error logging

The error log now includes the peer connection information, providing better context for troubleshooting connection failures.


297-301: Consistent log enhancement for channel closure

The log message for channel closure now consistently includes peer connection information.


308-311: Improved substream end logging

The substream end log message now includes peer connection information, maintaining consistency with other log messages.


317-320: Enhanced error reporting for substream errors

The error log for substream errors now includes detailed peer connection information, which will be valuable for diagnosing stream issues.


395-399: Test correctly updated with PeerConnectionInfo

The test for open_substream has been properly updated to create and pass a PeerConnectionInfo instance.


429-436: Test properly modified for substream_count

The substream_count test has been correctly updated to include PeerConnectionInfo.


473-478: Close test properly updated

The test for connection closure has been correctly modified to include PeerConnectionInfo.


518-524: Rude close test correctly updated

The test for handling abrupt connection closures has been properly updated to create and pass PeerConnectionInfo instances.


554-559: Big message test properly updated

The test for sending large messages has been correctly updated to include PeerConnectionInfo.

Copy link

github-actions bot commented Apr 1, 2025

Test Results (CI)

    3 files    129 suites   43m 26s ⏱️
1 353 tests 1 353 ✅ 0 💤 0 ❌
4 057 runs  4 057 ✅ 0 💤 0 ❌

Results for commit 355a3c4.

♻️ This comment has been updated with latest results.

SWvheerden
SWvheerden previously approved these changes Apr 1, 2025
Copy link

github-actions bot commented Apr 1, 2025

Test Results (Integration tests)

36 tests  +36   36 ✅ +36   16m 34s ⏱️ + 16m 34s
11 suites +11    0 💤 ± 0 
 2 files   + 2    0 ❌ ± 0 

Results for commit 355a3c4. ± Comparison against base commit f1451f5.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
comms/core/src/connection_manager/common.rs (2)

54-59: LGTM: New PeerConnectionInfo struct with appropriate fields

This new struct properly encapsulates the optional peer connection details (public key, features, and user agent) as mentioned in the PR objectives. The use of Option for all fields allows for flexibility when complete information isn't available.

Consider adding documentation comments to describe the purpose of this struct and its fields, which would help other developers understand its usage throughout the codebase.

 #[derive(Clone, Debug, Eq, PartialEq)]
+/// Contains information about a peer connection that can be displayed for debugging purposes.
 pub struct PeerConnectionInfo {
+    /// The public key of the connected peer, if available
     pub public_key: Option<CommsPublicKey>,
+    /// The features supported by the peer, if available
     pub features: Option<PeerFeatures>,
+    /// The user agent string of the peer, if available
     pub user_agent: Option<String>,
 }

61-72: Implementation of Display trait provides good error information

The Display implementation effectively formats the peer connection information for debugging, which aligns with the PR objective of enhancing stream error information. The implementation correctly handles optional fields with appropriate defaults.

Two potential improvements to consider:

  1. You're generating a NodeId from the public key in every Display call. For frequently displayed objects, you might consider caching this or adding a helper method.
  2. You could implement a Default for PeerConnectionInfo to centralize default value logic.
+impl Default for PeerConnectionInfo {
+    fn default() -> Self {
+        Self {
+            public_key: None,
+            features: None,
+            user_agent: None,
+        }
+    }
+}

 impl Display for PeerConnectionInfo {
     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
         write!(
             f,
             "PeerConnectionInfo(public_key: {}, node_id: {}, features: {}, user_agent: {})",
             self.public_key.as_ref().unwrap_or(&CommsPublicKey::default()).to_hex(),
             NodeId::from_public_key(self.public_key.as_ref().unwrap_or(&CommsPublicKey::default())),
             self.features.unwrap_or_default(),
             self.user_agent.as_deref().unwrap_or_default()
         )
     }
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5a57a86 and 0e533a6.

📒 Files selected for processing (2)
  • comms/core/src/connection_manager/common.rs (2 hunks)
  • comms/core/src/connection_manager/listener.rs (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • comms/core/src/connection_manager/listener.rs
🧰 Additional context used
🧬 Code Definitions (1)
comms/core/src/connection_manager/common.rs (4)
comms/core/src/connection_manager/manager.rs (1)
  • fmt (84-104)
comms/core/src/peer_manager/peer.rs (1)
  • fmt (290-333)
base_layer/core/src/transactions/transaction_components/transaction_output.rs (1)
  • fmt (523-541)
comms/core/src/peer_manager/node_id.rs (2)
  • as_ref (228-230)
  • from_public_key (86-88)
⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: Cucumber tests / FFI
  • GitHub Check: Cucumber tests / Base Layer
  • GitHub Check: test (mainnet, stagenet)
  • GitHub Check: test (nextnet, nextnet)
  • GitHub Check: test (testnet, esmeralda)
  • GitHub Check: cargo check with stable
🔇 Additional comments (1)
comms/core/src/connection_manager/common.rs (1)

25-25: LGTM: Imports for the new Display trait implementation

The addition of the necessary imports for Display, Formatter, and Hex is appropriate for the new functionality being added.

Also applies to: 30-30

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
comms/core/src/connection_manager/common.rs (4)

60-60: Fix typo in field name

There appears to be a typo in the field name node_if, which should likely be node_id based on its purpose and usage.

-    node_if: Option<NodeId>,
+    node_id: Option<NodeId>,

67-76: Avoid unnecessary clone in constructor

In the constructor, public_key is unnecessarily cloned. Since it's already an Option and you're taking ownership, you can avoid the clone.

 impl PeerConnectionInfo {
     pub fn new(public_key: Option<CommsPublicKey>, features: Option<PeerFeatures>, user_agent: Option<String>) -> Self {
         Self {
-            public_key: public_key.clone(),
+            public_key,
             node_if: public_key.as_ref().map(NodeId::from_public_key),
             features,
             user_agent,
         }
     }
 }

78-89: Update Display implementation to match field name change

If you rename the field as suggested above, don't forget to update the Display implementation as well. Also, consider handling edge cases where Debug representation might be more informative for complex types.

 impl Display for PeerConnectionInfo {
     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
         write!(
             f,
             "PeerConnectionInfo(public_key: {}, node_id: {}, features: {}, user_agent: {})",
             self.public_key.as_ref().unwrap_or(&CommsPublicKey::default()).to_hex(),
-            self.node_if.as_ref().unwrap_or(&NodeId::default()),
+            self.node_id.as_ref().unwrap_or(&NodeId::default()),
             self.features.unwrap_or_default(),
             self.user_agent.as_deref().unwrap_or_default()
         )
     }
 }

71-71: Update all references to field name if changed

If you update the field name from node_if to node_id, also update this reference in the constructor.

-            node_if: public_key.as_ref().map(NodeId::from_public_key),
+            node_id: public_key.as_ref().map(NodeId::from_public_key),
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0e533a6 and 3402aec.

📒 Files selected for processing (5)
  • comms/core/src/connection_manager/common.rs (2 hunks)
  • comms/core/src/connection_manager/dialer.rs (2 hunks)
  • comms/core/src/connection_manager/listener.rs (2 hunks)
  • comms/core/src/multiplexing/yamux.rs (18 hunks)
  • comms/core/src/test_utils/transport.rs (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • comms/core/src/test_utils/transport.rs
  • comms/core/src/connection_manager/listener.rs
  • comms/core/src/connection_manager/dialer.rs
  • comms/core/src/multiplexing/yamux.rs
🧰 Additional context used
🧬 Code Definitions (1)
comms/core/src/connection_manager/common.rs (3)
comms/core/src/connection_manager/manager.rs (2)
  • fmt (84-104)
  • new (208-281)
comms/core/src/peer_manager/peer.rs (1)
  • fmt (290-333)
comms/core/src/peer_manager/node_id.rs (2)
  • from_public_key (86-88)
  • as_ref (228-230)
⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: Cucumber tests / Base Layer
  • GitHub Check: Cucumber tests / FFI
  • GitHub Check: test (nextnet, nextnet)
  • GitHub Check: test (mainnet, stagenet)
  • GitHub Check: test (testnet, esmeralda)
  • GitHub Check: cargo check with stable
  • GitHub Check: ci
🔇 Additional comments (1)
comms/core/src/connection_manager/common.rs (1)

54-65: Good addition of structured connection information

The new PeerConnectionInfo struct is a good addition for encapsulating peer connection details. This will help with the PR's goal of enhancing yamux by adding display information for stream errors.

@SWvheerden SWvheerden merged commit 2156647 into tari-project:development Apr 2, 2025
18 checks passed
@hansieodendaal hansieodendaal deleted the ho_yamux_display branch April 2, 2025 12:17
SWvheerden pushed a commit that referenced this pull request Apr 2, 2025
Description
---
- Yamux should not poll after an error.
- Adds further specialization on error handling when the remote peer
disconnects forcefully.

Motivation and Context
---
Tha yamux close was erroneously introduced in a previous PR #6904.

How Has This Been Tested?
---
Not tested - just reverting

What process can a PR reviewer use to test or verify this change?
---
Code review 

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Enhanced handling of connection issues to deliver more stable and
reliable network interactions.
- Updated the connection closure process to better manage unexpected
interruptions and reduce disruptions.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
sdbondi added a commit to sdbondi/tari that referenced this pull request Apr 3, 2025
* development:
  chore: new release v1.13.3-pre.0 (tari-project#6919)
  fix: fix migration 5 (tari-project#6915)
  chore: update change logs (tari-project#6913)
  chore: new release v1.13.2-pre.0 (tari-project#6912)
  fix: randomX seed management (tari-project#6910)
  fix(comms/yamux): dont poll the substream after closing/error (tari-project#6911)
  fix: dont poll yamux substream after an error (tari-project#6909)
  feat: remove memory allocation for max_size_vec (tari-project#6903)
  feat: add display info to yamux (tari-project#6904)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants