When load-lib fails, a namespace is still created

Description

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?

Environment

None

Attachments

1

Activity

Show:

Stuart Halloway June 8, 2012 at 9: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...

Stuart Halloway June 8, 2012 at 9:17 PM

Why catch Exception, not Throwable?

Completed

Details

Assignee

Reporter

Approval

Ok

Patch

Code and Test

Priority

Affects versions

Fix versions

Created March 2, 2012 at 1:30 AM
Updated June 15, 2012 at 5:09 PM
Resolved June 15, 2012 at 5:09 PM