diff --git a/models/issue.go b/models/issue.go
index 503ff32b8e..396c029d46 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -699,8 +699,14 @@ func UpdateIssueCols(issue *Issue, cols ...string) error {
 }
 
 func (issue *Issue) changeStatus(e *xorm.Session, doer *User, isClosed bool) (err error) {
+	// Reload the issue
+	currentIssue, err := getIssueByID(e, issue.ID)
+	if err != nil {
+		return err
+	}
+
 	// Nothing should be performed if current status is same as target status
-	if issue.IsClosed == isClosed {
+	if currentIssue.IsClosed == isClosed {
 		return nil
 	}