diff --git a/test/test-try-reloading.script b/test/test-try-reloading.script
new file mode 100644
index 0000000000000000000000000000000000000000..615631aca186ecabff19fb5c506bce2a248a8a52
--- /dev/null
+++ b/test/test-try-reloading.script
@@ -0,0 +1,35 @@
+;;; -*- Lisp -*-
+
+;;; test retrying finding location of an ASDF system.
+
+
+(in-package asdf-test)
+(defparameter *old-registry* asdf:*central-registry*)
+;;(defparameter *search-table* (hash-table->alist asdf::*source-registry*))
+;;(pprint *search-table*)
+;;(terpri)
+(assert (asdf:find-system "test-asdf/force1"))
+
+(DBG "Clearing the caches and finding.")
+(setf asdf:*central-registry* nil)
+(asdf/find-system:clear-defined-system "test-asdf/force1")
+(assert (not (asdf:find-system "test-asdf/force1" nil)))
+(let (tried-once)
+  (handler-bind
+   ((asdf:missing-dependency-of-version
+     (lambda (c)
+       ;; Nothing Quicklisp can do to recover from this, so
+       ;; just resignal
+       (error c)))
+    (asdf:missing-dependency
+     (lambda (c)
+       (if (not tried-once)
+           (let ((missing (asdf::missing-requires c)))
+             (assert (equal missing "test-asdf/force1"))
+             (setf tried-once t)
+             (DBG "Trying to reset the central registry and retry.")
+             (setf asdf:*central-registry* *old-registry*)
+             (asdf:find-system missing))
+         ;; avoid infinite looping
+         (error c)))))
+ (asdf:find-system "test-asdf/force1")))