[CLJ-943] When load-lib fails, a namespace is still created Created: 01/Mar/12 Updated: 15/Jun/12 Resolved: 15/Jun/12
|Affects Version/s:||Release 1.3, Release 1.4|
|Fix Version/s:||Release 1.5|
|Patch:||Code and Test|
When requiring a namespace that doesn't compile, a namespace is still created. The attached patch removes the namespace on failure if the namespace wasn't already present on entry to load-lib. See the test case in the patch for repro instructions.
This is obviously a subset of having atomic loads. Would a step further in this direction, e.g. using a swapable state object within clojure.lang.Namespace be of interest?
|Comment by Stuart Halloway [ 08/Jun/12 3:17 PM ]|
Why catch Exception, not Throwable?
|Comment by Stuart Halloway [ 08/Jun/12 3:23 PM ]|
This patch accomplishes its purpose, although (in the absence of fully atomic load) I would imagine it creates a race condition if one thread tried to load a broken namespace while another thread tried simply to create a namespace.
Marked screened anyway...