Page MenuHomePhabricator

[server] avoid creating multiple connection pools
ClosedPublic

Authored by kamil on Sep 5 2022, 7:29 AM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Oct 28, 3:03 AM
Unknown Object (File)
Mon, Oct 28, 3:03 AM
Unknown Object (File)
Mon, Oct 28, 3:02 AM
Unknown Object (File)
Mon, Oct 28, 2:49 AM
Unknown Object (File)
Oct 10 2024, 11:34 PM
Unknown Object (File)
Oct 10 2024, 5:59 AM
Unknown Object (File)
Oct 5 2024, 1:40 AM
Unknown Object (File)
Oct 4 2024, 3:35 PM

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