-
Notifications
You must be signed in to change notification settings - Fork 123
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
release: create v0.3.3 branch #771
Merged
Roasbeef
merged 60 commits into
lightninglabs:v0-3-3-branch
from
Roasbeef:v0-3-3-branch
Jan 26, 2024
Merged
release: create v0.3.3 branch #771
Roasbeef
merged 60 commits into
lightninglabs:v0-3-3-branch
from
Roasbeef:v0-3-3-branch
Jan 26, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… syncers In this commit, we attempt to fix a TCP connection leak by explicitly closing the gRPC connections we create once we're done with the relevant gRPC client. Otherwise, we'll end up making a new connection for each new asset to be pushed, which can add up. In the future, we should also look into the server-side keep alive options.
This is similar to the prior commit: we add a new method to allow a caller to close down a courier once they're done with it. This ensures that we'll always release the resources once we're done with them.
In this commit, we set a gRPC param that controls how long a connection can be idle for. The goal here is to prune the amount of open TCP connections on an active/popular universe server. According to the docs: > Idleness duration is defined since the most recent time the number of outstanding RPCs became zero or the connection establishment.
Since a pre-signed parcel (a parcel that uses the RPC driven vPSBT flow) doesn't have proof courier URLs (they aren't part of the vPSBT), the proofs must always be delivered in an interactive manner from sender to receiver and we don't even need to attempt to use a proof courier.
With this commit we remove the use of the proof.DisabledCourier courier by default and instead use the universe RPC proof courier if nothing is specified in the integration test case list.
The original server harness was meant to be the actual universe RPC server from the beginning. So we can merge the two into a single one and start/use that by default.
With this commit we remove all instances of the manual proof transfer from call sites that do an actual non-interactive (address based) transfer, for which a proof courier should now handle the proof transmission.
By default we want all new tapd instances to be synced with the main universe server, so we add it as a federation member unless specifically disabled.
With this commit we optimize the backoff config to enable much faster proof transmission during integration tests. A significant speedup also comes from reducing the time the custodian waits between detecting a transfer on-chain and attempting to fetch the proof with the courier.
Since we now have a main universe server by default, we can disable test nodes syncing directly to each other by default.
This commit renames `ListUniverseServers` into `QueryUniverseServers`. It also adds a `WHERE` clause to the SQL statement to allow us to filter on server host or row ID.
This commit adds a new function called `NewUniIDFromRawArgs`. The function can be used to derive a universe identifier from raw asset ID/group key bytes. We will use this function to derive a universe ID from data stored in the database.
This commit also adds log query/upserts SQL statements.
This commit adds a flag to the federation universe push request to indicate that the proof leaf sync attempt should be logged and actively managed to ensure that the federation push procedure is repeated in the event of a failure.
This commit adds an integration test which helps to ensure that a minting node will retry pushing a minting proof to a federation server peer node, in the event that that peer node failed to receive the proof at the time of the initial sync attempt.
This structure will allow us to pass around the same db store handler to different helper functions which will aid in setting up a unit test db.
Now that we have enabled a proof courier for all integration tests, we don't need to conditionally load the config anymore.
With this commit we disentangle the configurations for the two proof couriers, so we can configure them individually in a proper way.
Instead of needing to create a special proof courier address and then creating a courier from that, we want to have a central dispatcher that can hold on to the configuration for each of the different couriers. A courier is then created through the dispatcher directly.
This commit switches the custodian and porter over to using the new proof courier dispatcher. This then allows us to delete a bunch of now unused code related to proof courier addresses.
We didn't re-try using a proof courier to receive an asset after a restart of the daemon. This commit fixes lightninglabs#597.
This commit moves the notification for subscribers about a transfer being complete from the proof courier only part to the general function we end up in if a transfer is complete.
This commit makes sure we only start the proof courier once the on-chain transaction has confirmed. Otherwise we'll run into backoffs for sure until we get the first confirmation.
By reducing the hashmail proof receiver ACK timeout from 15 seconds to 5 seconds, we can save quite some time during the integration tests.
In this commit, we add support for logging migrations as they happen. This is useful for users to keep track of what happens during a `tapd` update.
With this commit we change the NotifyArchiver to the bare minimum that we actually need in the custodian.
With this commit we extract the logic for iteratively retrieving the full provenance for an asset by starting at the last proof then querying each previous proof until we arrive at the genesis. We will want to re-use this logic outside of the proof courier itself, so it's useful to extract into a general-purpose function where the actual retrieval of an individual proof is done in a callback and can be adjusted to the current proof storage (local or remote).
This is an optimization that allows us to only extract the asset from the proof when fetching the full proof provenance. That saves us a whole decode/encode round trip per proof.
In some situations we want a quick way to find out if we have a proof (or not) without actually fetching it, so we add a HasProof method to the proof.Archive interface. The MultiArchiver will return false if one of the backends does not have the proof, so we can use that method to find out if we have a discrepancy between the backends and should import a proof file.
With this commit we prepare the MultiverseStore to also act as a NotifyArchiver that can notify about new incoming proofs.
Because the universe only deals with individual proof leaves, we want the custodian to be able to deal with both proof files and single proofs. To make it easy to distinguish and convert between the two, we add some helper methods to the proof.Blob type.
Since we now might get either a full proof file or just a transition proof, the custodian needs to be updated to be able to deal with both.
This commit creates a new notifier that can relay registrations for new proofs to multiple notifier/archiver backends. We then use that to pass in both the local assets store as well as the multiverse store to the custodian to detect incoming proofs.
ffranr
approved these changes
Jan 26, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Includes: