Page MenuHomePhabricator

[server] avoid creating multiple connection pools
ClosedPublic

Authored by kamil on Sep 5 2022, 7:29 AM.
Tags
None
Referenced Files
F2834036: D5050.id16378.diff
Sat, Sep 28, 9:50 AM
Unknown Object (File)
Thu, Sep 12, 4:27 PM
Unknown Object (File)
Tue, Sep 10, 9:58 PM
Unknown Object (File)
Tue, Sep 10, 9:58 PM
Unknown Object (File)
Tue, Sep 10, 9:57 PM
Unknown Object (File)
Tue, Sep 10, 9:54 PM
Unknown Object (File)
Wed, Sep 4, 11:24 PM
Unknown Object (File)
Mon, Sep 2, 3:48 AM

Details

Summary

Solves problem described in ENG-1682.

When there are multiple dbQuery at one time also multiple loadPool() can run asynchronously, which lead to problem visible at this debug logs:

image.png (380×1 px, 87 KB)

which means we call mysqlPromise.createPool(options) and assign it to pool when there is an already defined connection, as a result, we override the previous one which is not being closed and cause e.g. scripts not exiting.

Also, each spawned worker has a separate pool connection so this fix should work without additional synchronization.

Test Plan

Run script (e.g. rename-user.js since it begins with multiple asynchronous queries) and check if it will exit adequately.

Diff Detail

Repository
rCOMM Comm
Branch
fix-scripts
Lint
No Lint Coverage
Unit
No Test Coverage

Event Timeline

kamil held this revision as a draft.
kamil published this revision for review.Sep 5 2022, 7:42 AM
kamil edited the summary of this revision. (Show Details)
kamil edited the test plan for this revision. (Show Details)
kamil added reviewers: atul, ashoat.
This revision is now accepted and ready to land.Sep 6 2022, 12:31 AM

Great catch!! Looks like I introduced this issue in D4097