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 transaction deadlock in client pool #22

Merged
merged 2 commits into from
Oct 10, 2023

Conversation

quinchs
Copy link
Collaborator

@quinchs quinchs commented Oct 9, 2023

Summary

When running a transaction with the transaction() method on EdgeDBClient, a client is fetched or created from the underlying client pool. The client from the pool is used to run the entire transaction block, the issue is that the binding didn't return the client back to the pool after use.

This PR fixes this by explicitly calling the close method on the client after the transaction block completes (successfully or not) via the composeWith method.

Fixes #21

@quinchs
Copy link
Collaborator Author

quinchs commented Oct 9, 2023

@petersamokhin Did the bug also occur with non-transactional code? I couldn't find anything thru non-transactional fuzzing

@petersamokhin
Copy link

@quinchs yes, it happened even outside transactions 🥲

@quinchs quinchs merged commit 13bed4d into master Oct 10, 2023
2 checks passed
@quinchs quinchs deleted the fix/transaction-client-handling branch October 10, 2023 15:55
quinchs added a commit that referenced this pull request Oct 25, 2023
commit 8c07ee4
Author: Quin Lynch <[email protected]>
Date:   Wed Oct 25 14:27:48 2023 -0300

    Update ChannelDuplexer.java

commit fdd6101
Merge: 28cebea dd661c6
Author: Quin Lynch <[email protected]>
Date:   Wed Oct 25 14:21:57 2023 -0300

    Merge branch 'master' into feat/protocol-v2

commit dd661c6
Author: Quin Lynch <[email protected]>
Date:   Fri Oct 20 13:18:18 2023 -0300

    meta: 0.2.4-SNAPSHOT

commit 81ee0d1
Author: Quin Lynch <[email protected]>
Date:   Fri Oct 20 13:17:59 2023 -0300

    meta: 0.2.3

commit 4647a17
Author: Quin Lynch <[email protected]>
Date:   Fri Oct 20 12:46:25 2023 -0300

    Fix reconnection deadlock (#23)

commit 3be463b
Author: Quin Lynch <[email protected]>
Date:   Tue Oct 17 21:10:13 2023 -0300

    fix the reconnect logic

commit dfb97dd
Author: Quin Lynch <[email protected]>
Date:   Tue Oct 17 20:49:55 2023 -0300

    remove duplicate reconnect behavior

    Binding would call `reconnect()` which then gets reconnected on duplexer level just to sent Terminate and hang :cry:

commit 6e52959
Author: Quin Lynch <[email protected]>
Date:   Sun Oct 15 13:36:14 2023 -0300

    Fix idle clients causing exceptions

commit a89822d
Author: Quin Lynch <[email protected]>
Date:   Sat Oct 14 21:52:20 2023 -0300

    Fix cloud connection logic

commit 5bb3ba2
Author: Quin Lynch <[email protected]>
Date:   Tue Oct 10 13:09:03 2023 -0300

    meta: 0.2.3-SNAPSHOT

commit ca6ad29
Author: Quin Lynch <[email protected]>
Date:   Tue Oct 10 12:58:18 2023 -0300

    meta: 0.2.2

commit 13bed4d
Author: Quin Lynch <[email protected]>
Date:   Tue Oct 10 12:55:27 2023 -0300

    Fix transaction deadlock in client pool (#22)

commit 28cebea
Merge: dbd4099 7fa55fa
Author: Quin Lynch <[email protected]>
Date:   Tue Sep 26 13:48:57 2023 -0300

    update from master

commit 7fa55fa
Author: Quin Lynch <[email protected]>
Date:   Tue Sep 26 13:28:29 2023 -0300

    Fix primitive deserialization on datatypes (#20)

commit 43da5b2
Author: Quin Lynch <[email protected]>
Date:   Thu Sep 21 15:55:04 2023 -0300

    Update README.md

    closes #19

commit 2a54501
Author: Quin Lynch <[email protected]>
Date:   Wed Sep 13 11:23:59 2023 -0300

    Make EdgeDBClient implement AutoCloseable
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.

Query stuck forever
2 participants