Page MenuHomePhabricator

[server] avoid creating multiple connection pools
ClosedPublic

Authored by kamil on Sep 5 2022, 7:29 AM.
Tags
None
Referenced Files
F3498468: D5050.id16327.diff
Thu, Dec 19, 9:18 PM
F3496853: D5050.diff
Thu, Dec 19, 3:51 PM
Unknown Object (File)
Wed, Dec 11, 12:06 AM
Unknown Object (File)
Fri, Dec 6, 5:12 PM
Unknown Object (File)
Fri, Dec 6, 5:11 PM
Unknown Object (File)
Fri, Dec 6, 4:48 PM
Unknown Object (File)
Wed, Dec 4, 7:12 PM
Unknown Object (File)
Oct 28 2024, 3:03 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