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

Fix edge case in warpsync which deadlocks syncing #1763

Merged
merged 1 commit into from
Sep 21, 2022
Merged

Conversation

muXxer
Copy link
Collaborator

@muXxer muXxer commented Sep 20, 2022

This PR fixes the following edge case:

The node has more than advancementRange milestones already in its database, but not confirmed.
The solidifier triggers, but can't request the missing parents because of the set filter of warpsync in the request queue.
The MilestoneSolidificationFailed triggers, but can't request the milestones because they already exist.

The code was changed, so that parents of existing milestones are requested now as well in that case.

@muXxer muXxer merged commit f5a9904 into develop Sep 21, 2022
@muXxer muXxer deleted the fix/warpsync branch September 21, 2022 08:44
muXxer added a commit that referenced this pull request Jan 9, 2023
* Use iotaledger repository

* Update go version to 1.19

* Upgrade libp2p to monorepo version

* Fix libp2p connection issue (#1533)

* Use fixed private keys in peering tests

* Fix libp2p connection issue

* Send correct error message if a block is submitted without parents and no PoW is enabled

* Add new `/api/routes` endpoint

* Block static peers in autopeering module (#1608)

* Block static peers in autopeering module

* Disable TTL in selection blocklist

* Use hive.go chrysalis backports

* Avoid locking of the p2p Manager while connection attempts are performed (#1614)

* Avoid locking of the p2p Manager while connection attempts are performed

* Fix missing handling of peers already known to the manager

* Add per-request Rest metrics to prometheus (#1651)

* - Add per-request Rest metrics to prometheus

* - Made echo dep optional

* Extend dockerignore (#1660)

* Add new config param to disable snapshot file creation. Defaults to false. (#1711)

* Add config parameter to control whether the ledger state is checked on startup. Defaults to false. (#1712)

* Add config parameter to control whether the ledger state is checked on startup

* Measure and log ledger check time

* Added a ledger token supply check to the db-hash tool

* Drop unhealthy peers (#1736)

* Drop peers that are below our pruning index (#1739)

* Fix stuck peer (#1752)

* Removed OpenedStream/ClosedStream since they were removed from network.Notifee

* Drop connection to peer if the stream is closed

* Solidify messages synchronously while they are processed (#1761)

* Solidify messages synchronously while they are processed

* Only trigger the future cone solidifier if the message is solid

* Fix edge case in warpsync which deadlocks syncing (#1763)

* Github workflow updates

* Update CodeQL action to v2

* Run security-and-quality query suite

* Update actions/checkout to v3

* Update docker actions

* Add /metadata, /raw, /children endpoints to /included-message

* Release v1.2.2

* Read info from SyncManager atomically

* Add timestamp funcs to MilestoneStorage

* Update workflows

* Fix linter errors

* Add context to connect and reconnect peer

* Fix syncing issue by preventing requests race condition

* Address review comments

* Update modules

* Ignore linter warning

Co-authored-by: Alexander Sporn <github@alexsporn.de>
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.

Warpsync filters out missing blocks because checkpoint is older than the milestone that is being solidified
2 participants