<< Back to previous view

[CLJ-943] When load-lib fails, a namespace is still created Created: 01/Mar/12  Updated: 15/Jun/12  Resolved: 15/Jun/12

Status: Closed
Project: Clojure
Component/s: None
Affects Version/s: Release 1.3, Release 1.4
Fix Version/s: Release 1.5

Type: Defect Priority: Major
Reporter: Hugo Duncan Assignee: Unassigned
Resolution: Completed Votes: 0
Labels: None

Attachments: Text File 0001-Remove-namespace-if-load-lib-fails-and-namespace-did.patch    
Patch: Code and Test
Approval: Ok


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...

Generated at Sat Jan 20 11:17:26 CST 2018 using JIRA 4.4#649-r158309.