RFC Title
To be Reviewed By: October 26, 2020
Authors: Dale Emery
Status: Draft Draft | Discussion | Active | Dropped | Superseded
Superseded by: N/A
Related: N/A
Problem
What is this proposal solving? Why
Numerous Geode classes resolve relative file paths against the JVM’s working directory—the value of the user.dir
system property. Some classes do this explicitly, by resolving paths against the value of user.dir
. Other classes refer to to the JVM’s working directory implicitlyindirectly, either by using relative paths or by resolving paths against “.”
or “”
.
...
Every Gradle test worker JVM for a given task type (e.g. distributedTest) has the same working directory. When tests run in parallel outside of a container, if multiple tests write to the same file path relative to the JVM’s working directory, those tests all write to the same file. The tests interfere with each other's files, causing swarms of failures.
Anti-Goals
What is outside the scope of what the proposal is trying to solve?None identified.
Solution
Make Geode resolve relative paths against a configurable path defined by a new geode.working-dir
system property.
...
Optionally (TBD): These methods can ensure that the returned path is canonical (as defined by the java.io.File
documentation)absolute and normalized, and that it refers to an existing directory.
...
Any documentation that refers to user.dir
will need to refer instead to geode.working-dir
.
Any assumptions made by shell scripts that ship with Geode will have to account for this property.
Performance Impact
I expect that the additional cost to resolve paths to a canonical path will be minimal.
...
If the user specifies a geode.working-dir
other than the JVM's working directory, the effect on backward compatibility, the rolling upgrade process, and any shell scripts provided by either Geode or the user is TBD.
Prior Art
None known.
FAQ
Answers to questions you’ve commonly been asked after requesting comments for this proposalNone yet.
Errata
None to dateyet.