a lot of tests leave detritus in $TMPDIR #499
Merged
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.
There are two common problems:
LogContextand never invokecleanup_successful(). This leaves log files hanging around in $TMPDIR.ControlPlaneTestContextand never invoketeardown(). This also leaves log files hanging around in $TMPDIR. TheDropimpls onCockroachInstanceandClickHouseInstanceshould cause those programs to shut down and their storage directories to be cleaned up, but it's not a guarantee. If not, we might leak them, using up memory in the process.This change fixes them. I did this by looking at all the log files in $TMPDIR, which are named by what test created them, finding the test, and adding the appropriate cleanup call.
Obviously, this pattern is easy to mis-use. I'd welcome improvements here. The design goal is:
Because we want to keep these around on failure, we can't have the
Dropimpls clean up these files. We want to do that only if the test fails. The only way we know if it succeeds or fails is if the programmer tells us they succeeded by callingteardown()/cleanup_successful(). We could flip the default assumption so that you have to tell us when it failed, but that seems much harder to use and more error-prone.