-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Reapply #8644 #9242
base: master
Are you sure you want to change the base?
Reapply #8644 #9242
Conversation
Important Review skippedAuto reviews are limited to specific labels. 🏷️ Labels to auto review (1)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
6065746
to
27144ba
Compare
Waiting to push fix commit until CI completes for the reapplication. |
7a40c4a
to
1e7b192
Compare
Looks like there are still a couple of itests failing. Will keep working on this next week. |
The error message |
This looks relevant, re some of the errors I see in the latest CI run: https://stackoverflow.com/a/42303225 |
Perhaps part of the issue is with the
Based on the SO link above, we might also be lacking some needed indexes. |
With closing the channel and a couple of other tests, I'm seeing logs similar to:
when I reproduce locally, as well as in the CI logs. I'm going to pull on that thread first... On the test config side, also seeing these:
I think the first issue above is with the code, the second is a config issue, and the other config issue in my comment above are the three major failures still happening. I think the |
This looks like a case where we |
Yep, looking into why that isn't caught by the panic/recover mechanism. |
It was actually a lack of error checking in |
1e67a84
to
899ae59
Compare
Looks better as far as the errors on closing channels. Will keep working tomorrow to eliminate the other errors. |
Hmm, so we don't have great visibility into how much memory these CI machines have. Perhaps we need to modify the connection settings to reduce the number of active connections, and also tune params like @djkazic has been working on a postgres+lnd tuning/perf guide, that I think we can eventually check directly into lnd. |
This is also very funky: lnd/kvdb/sqlbase/readwrite_bucket.go Lines 336 to 363 in e3cc4d7
We do two queries to just delete: select to see if exists, then delete. Instead of just trying to delete. Stepping back a minute: perhaps the issue is with this flawed KV abstraction we have. Perhaps we should just re-create a better hierarchical KV table from scratch. We use |
Here's another instance of duplicated work in lnd/kvdb/sqlbase/readwrite_bucket.go Lines 149 to 187 in e3cc4d7
We select to see if it exists, then potentially do the insert again. Instead, we can just do an |
I think the way the sequence is implemented may also be problematic: we have the sequence field directly in the table, which means table locks may need to be held. The sequence gets incremented a lot for stuff like payments, or invoice. We may be able to instead split that out into another table that can be updated independently of the main table: lnd/kvdb/sqlbase/readwrite_bucket.go Lines 412 to 437 in e3cc4d7
|
I've been able to reduce (but not fully eliminate) the I've also tried treating these errors and In addition, I've found one more place where we get the I pushed these changes above for discussion. My next step is to try to reduce the number of conflicts based on @Roasbeef's suggestions above. I'm going on vacation for the rest of the week until next Tuesday, so will keep working on this then. |
I think treating the OOM errors as serialization errors ended up being a mistake. Going to take that out and push when this run is done. In addition, I'm trying doubling the |
I've rebased on |
b218301
to
689d5dd
Compare
Doing updates in #9313 now, though I can go back to here if that's preferred. |
Tests in #9313 are passing. Should I backport to this PR so the changes are based on |
689d5dd
to
29b8a75
Compare
Backported fixes from #9313 and rebased on latest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Confirm this fixes the postgres failures on top of #9260! Have some questions about the tagging, otherwise think it's good to go.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Getting there!
I've updated |
c488420
to
11cce29
Compare
Guess I should rebase again. |
This reverts commit 67419a7.
To make this itest work reliably with multiple parallel SQL transactions, we need to count both the settle and final HTLC events. Otherwise, sometimes the final events from earlier forwards are counted before the forward events from later forwards, causing a miscount of the settle events. If we expect both the settle and final event for each forward, we don't miscount.
11cce29
to
8e7a3b3
Compare
Change Description
Fix #9229 by reapplying #8644 and
batch
packagebatch
requests into their own transactions for postgres db backend to reduce serialization errorschanneldb
packagecurrent transaction is aborted
errors as serialization errors in case we hit a serialization error and ignore it, and get this error in a subsequent call to postgresdb-instance
postgres flags inMakefile
per @djkazic's recommendationsmaxconnections
parameter for postgres DBs to 20 instead of 50 by defaultSteps to Test
See the failing itests prior to the fix, and the passing itests after the fix.
Pull Request Checklist
Testing
Code Style and Documentation
[skip ci]
in the commit message for small changes.📝 Please see our Contribution Guidelines for further guidance.