compute_ctl: database_schema should keep process::Child as part of returned value #10273
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
/database_schema endpoint returns incomplete output from
pg_dump
Summary of changes
The Tokio process was not used properly. The returned stream does not include
process::Child
, and the process is scheduled to be killed immediately after theget_database_schema
call whencmd
goes out of scope.A simple solution is to remove
.kill_on_drop(true)
and addcmd.await
to the spawned task. While this approach should work fine, it forfeits the useful property of automatically killing unnecessary processes when HTTP connections are closed.An alternative solution I propose is to return a special Stream implementation that retains
process::Child
.What do you think? If the simpler solution is preferred, I can update this PR accordingly.