#3291 fix SQLite3 session read/update conflict on create new issue

This commit is contained in:
Unknwon 2016-07-21 14:26:30 +08:00
parent 57af7432fc
commit 5761342f32

View file

@ -73,15 +73,19 @@ func (i *Issue) BeforeUpdate() {
i.DeadlineUnix = i.Deadline.UTC().Unix() i.DeadlineUnix = i.Deadline.UTC().Unix()
} }
func (issue *Issue) loadAttributes() (err error) { func (issue *Issue) loadAttributes(e Engine) (err error) {
issue.Repo, err = GetRepositoryByID(issue.RepoID) issue.Repo, err = getRepositoryByID(e, issue.RepoID)
if err != nil { if err != nil {
return fmt.Errorf("GetRepositoryByID: %v", err) return fmt.Errorf("getRepositoryByID: %v", err)
} }
return nil return nil
} }
func (issue *Issue) LoadAttributes() (err error) {
return issue.loadAttributes(x)
}
func (i *Issue) AfterSet(colName string, _ xorm.Cell) { func (i *Issue) AfterSet(colName string, _ xorm.Cell) {
var err error var err error
switch colName { switch colName {
@ -403,7 +407,7 @@ func newIssue(e *xorm.Session, repo *Repository, issue *Issue, labelIDs []int64,
} }
} }
return issue.loadAttributes() return issue.loadAttributes(e)
} }
// NewIssue creates new issue with labels for repository. // NewIssue creates new issue with labels for repository.
@ -466,7 +470,7 @@ func GetIssueByRef(ref string) (*Issue, error) {
return nil, err return nil, err
} }
return issue, issue.loadAttributes() return issue, issue.LoadAttributes()
} }
// GetIssueByIndex returns issue by given index in repository. // GetIssueByIndex returns issue by given index in repository.
@ -481,7 +485,7 @@ func GetIssueByIndex(repoID, index int64) (*Issue, error) {
} else if !has { } else if !has {
return nil, ErrIssueNotExist{0, repoID, index} return nil, ErrIssueNotExist{0, repoID, index}
} }
return issue, issue.loadAttributes() return issue, issue.LoadAttributes()
} }
// GetIssueByID returns an issue by given ID. // GetIssueByID returns an issue by given ID.
@ -493,7 +497,7 @@ func GetIssueByID(id int64) (*Issue, error) {
} else if !has { } else if !has {
return nil, ErrIssueNotExist{id, 0, 0} return nil, ErrIssueNotExist{id, 0, 0}
} }
return issue, issue.loadAttributes() return issue, issue.LoadAttributes()
} }
type IssuesOptions struct { type IssuesOptions struct {