diff --git a/cmd/tiller/release_server.go b/cmd/tiller/release_server.go
index 757c1bf95f911034799cbec4a7b31df36af5c0ea..00af55e5c82612851c0e7709e2f4d60e29f1f801 100644
--- a/cmd/tiller/release_server.go
+++ b/cmd/tiller/release_server.go
@@ -508,6 +508,16 @@ func validateYAML(data string) error {
 	return yaml.Unmarshal([]byte(data), b)
 }
 
+func (s *releaseServer) recordRelease(r *release.Release, reuse bool) {
+	if reuse {
+		if err := s.env.Releases.Update(r); err != nil {
+			log.Printf("warning: Failed to update release %q: %s", r.Name, err)
+		}
+	} else if err := s.env.Releases.Create(r); err != nil {
+		log.Printf("warning: Failed to record release %q: %s", r.Name, err)
+	}
+}
+
 // performRelease runs a release.
 func (s *releaseServer) performRelease(r *release.Release, req *services.InstallReleaseRequest) (*services.InstallReleaseResponse, error) {
 	res := &services.InstallReleaseResponse{Release: r}
@@ -530,9 +540,7 @@ func (s *releaseServer) performRelease(r *release.Release, req *services.Install
 	if err := kubeCli.Create(r.Namespace, b); err != nil {
 		r.Info.Status.Code = release.Status_FAILED
 		log.Printf("warning: Release %q failed: %s", r.Name, err)
-		if err := s.env.Releases.Create(r); err != nil {
-			log.Printf("warning: Failed to record release %q: %s", r.Name, err)
-		}
+		s.recordRelease(r, req.ReuseName)
 		return res, fmt.Errorf("release %s failed: %s", r.Name, err)
 	}
 
@@ -551,9 +559,7 @@ func (s *releaseServer) performRelease(r *release.Release, req *services.Install
 	// One possible strategy would be to do a timed retry to see if we can get
 	// this stored in the future.
 	r.Info.Status.Code = release.Status_DEPLOYED
-	if err := s.env.Releases.Create(r); err != nil {
-		log.Printf("warning: Failed to record release %q: %s", r.Name, err)
-	}
+	s.recordRelease(r, req.ReuseName)
 	return res, nil
 }
 
diff --git a/cmd/tiller/release_server_test.go b/cmd/tiller/release_server_test.go
index 27f924f2d877a439496d4c8bdb704cc029785c0e..a9d042ab58113630f439b70c6cd85c14ece0afa7 100644
--- a/cmd/tiller/release_server_test.go
+++ b/cmd/tiller/release_server_test.go
@@ -451,6 +451,15 @@ func TestInstallReleaseReuseName(t *testing.T) {
 	if res.Release.Name != rel.Name {
 		t.Errorf("expected %q, got %q", rel.Name, res.Release.Name)
 	}
+
+	getreq := &services.GetReleaseStatusRequest{Name: rel.Name}
+	getres, err := rs.GetReleaseStatus(c, getreq)
+	if err != nil {
+		t.Errorf("Failed to retrieve release: %s", err)
+	}
+	if getres.Info.Status.Code != release.Status_DEPLOYED {
+		t.Errorf("Release status is %q", getres.Info.Status.Code)
+	}
 }
 
 func TestUpdateRelease(t *testing.T) {