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

release: create v0.3.3 branch #771

Merged
merged 60 commits into from
Jan 26, 2024

Conversation

Roasbeef and others added 8 commits January 26, 2024 13:37
… 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.
@Roasbeef Roasbeef changed the base branch from main to v0-3-3-branch January 26, 2024 21:43
guggero and others added 21 commits January 26, 2024 13:54
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.
Roasbeef and others added 27 commits January 26, 2024 13:54
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 ffranr self-requested a review January 26, 2024 23:20
@Roasbeef Roasbeef merged commit f7c543d into lightninglabs:v0-3-3-branch Jan 26, 2024
14 checks passed
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.

4 participants