7689abb421 CHIA-4264: Continue Wallet Subscriptions After a Single Peer Fails (#21245)
* Continue wallet subscriptions after a single peer fails

One bad peer in _process_new_subscriptions previously aborted the whole
batch, leaving later peers without the new PH/coin-id registrations.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Use real peers in subscription peer-error test

Replace MagicMock peers with two full nodes and only fail the bad peer's register handlers.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Narrow subscription peer-error handling to RPC failures

Only catch subscribe failures so local apply errors do not ban every peer, and guard peer.close so close exceptions cannot abort the batch.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Tighten subscription failure handling to peer/RPC errors

Catch ValueError/ProtocolError/OSError instead of Exception, and use log_exceptions when closing a failed peer.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Treat protocol Error and StreamableError as subscription peer failures

Normalize Error/unexpected subscribe responses to ValueError, and catch
StreamableError in the per-peer handler so corrupt payloads do not abort the batch.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add unit tests for subscribe response normalization helper.

Cover Error, unexpected-type, None, and success paths without mocking peers.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Drop happy-path unit test for subscribe response helper.

Rejection cases are enough for the coverage gap; success is already exercised elsewhere.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 13:44:54 -07:00
2026-07-09 12:32:45 -05:00
2024-03-13 13:41:04 -07:00
2024-07-16 11:04:07 -07:00
2024-11-04 15:22:52 -07:00
2026-05-13 09:32:01 -05:00
2026-05-13 09:32:01 -05:00
2026-01-06 09:51:23 -06:00

chia-blockchain

Chia Network logo

Releases Repo Stats Socials
Latest Release
Latest RC
Latest Beta
Coverage
Downloads
Commits
Contributors
Discord
YouTube
Reddit
Twitter

Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure. Here are some of the features and benefits:

  • Proof of space and time based consensus which allows anyone to farm with commodity hardware
  • Very easy to use full node and farmer GUI and cli (thousands of nodes active on mainnet)
  • Chia seeder, which maintains a list of reliable nodes within the Chia network via a built-in DNS server.
  • Simplified UTXO based transaction model, with small on-chain state
  • Lisp-style Turing-complete functional programming language for money related use cases
  • BLS keys and aggregate signatures (only one signature per block)
  • Pooling protocol that allows farmers to have control of making blocks
  • Support for light clients with fast, objective syncing
  • A growing community of farmers and developers around the world

Please check out the Chia website, the Intro to Chia, and FAQ for information on this project.

Python 3.10+ is required. Make sure your default python version is >=3.10 by typing python3.

If you are behind a NAT, it can be difficult for peers outside your subnet to reach you when they start up. You can enable UPnP on your router or add a NAT (for IPv4 but not IPv6) and firewall rules to allow TCP port 8444 access to your peer. These methods tend to be router make/model specific.

Most users should only install harvesters, farmers, plotter, full nodes, and wallets. Setting up a seeder is best left to more advanced users. Building Timelords and VDFs is for sophisticated users, in most environments. Chia Network and additional volunteers are running sufficient Timelords for consensus.

Installing

Install instructions are available in the Installation Details section of the Chia Docs.

Running

Once installed, an Intro to Chia guide is available in the Chia Docs.

S
Description
Chia blockchain python implementation (full node, farmer, harvester, timelord, and wallet)
Readme Apache-2.0
362 MiB
Languages
Python 99.4%
Shell 0.4%
PowerShell 0.2%