Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doctor check & fix db consistency #11111

Merged
Merged
Changes from 1 commit
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
4120aa1
rename check-db to check-db-version to have multible db checks
6543 Apr 17, 2020
2627b81
add runDoctorCheckDBConsistency
6543 Apr 17, 2020
fe48054
add find pulls without existing issues
6543 Apr 17, 2020
21330fd
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 Apr 17, 2020
7e261d0
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 Apr 18, 2020
ea605b7
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 Apr 18, 2020
5cfa0d4
move Issue Deletion to issue.go
6543 Apr 19, 2020
b8b5de3
use DeleteIssuesByIDs
6543 Apr 19, 2020
ec02b3a
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 Apr 19, 2020
17589b9
use err
6543 Apr 19, 2020
d6f1f0e
just another one
6543 Apr 19, 2020
bd8a751
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 Apr 20, 2020
6d6ed69
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 1, 2020
a3ff964
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 5, 2020
8a6fbfb
move things into models
6543 May 5, 2020
7231236
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 5, 2020
2796aee
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 6, 2020
f738ee9
test ...
6543 May 6, 2020
f6f44e8
restructure things ...
6543 May 6, 2020
8da4ce2
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 6, 2020
44ec589
delete cracy thing
6543 May 6, 2020
280599d
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 7, 2020
dae04ee
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 8, 2020
51503eb
as per @guillep2k
6543 May 9, 2020
1710227
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 9, 2020
08debec
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 9, 2020
b56f267
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 12, 2020
c9b9645
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 16, 2020
2f4ca1e
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 16, 2020
a0f626e
make sure DB version is uptodate
6543 May 16, 2020
2f7ba56
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 16, 2020
44d33cb
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 21, 2020
0fffab5
move DB tasks next to each other
6543 May 21, 2020
9073130
return error if try to fix an outdated DB and do nothing
6543 May 21, 2020
2b4bd51
renamed as per @guillep2k
6543 May 21, 2020
3fe8d16
use Distinct
6543 May 21, 2020
50808fa
Fix: converting NULL to int64 is unsupported
6543 May 21, 2020
2e8d900
refactor
6543 May 21, 2020
9a324b5
outdatedDB message Update
6543 May 21, 2020
b862ee8
remove redundant error & always warn on old version
6543 May 21, 2020
610ddac
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 21, 2020
65497f2
Merge branch 'master' into doctor-check-fix-db-consistency_10280
lunny May 22, 2020
0553629
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 23, 2020
826e2f2
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 23, 2020
cba3390
whatever it takes
6543 May 23, 2020
a9dcb3e
only sync if needed
6543 May 27, 2020
b3cbc73
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 27, 2020
3fd2f1c
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 28, 2020
a76c2f2
Revert "only sync if needed"
6543 May 28, 2020
704e359
add documentation
6543 May 28, 2020
f9bd1a4
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 28, 2020
0ae896d
its Nr 11111
6543 May 28, 2020
d2e438d
its an error now
6543 May 28, 2020
9d8f61e
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 28, 2020
7dca8b4
Merge branch 'master' into doctor-check-fix-db-consistency_10280
6543 May 29, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add runDoctorCheckDBConsistency
  • Loading branch information
6543 committed Apr 17, 2020
commit 2627b81d0c51cc07758e6ff338cbf63ce7d60d8f
67 changes: 67 additions & 0 deletions cmd/doctor.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ var checklist = []check{
isDefault: false,
f: runDoctorPRMergeBase,
},
{
title: "Check consistency of database",
name: "check-db-consistency",
isDefault: false,
f: runDoctorCheckDBConsistency,
},
// more checks please append here
}

Expand Down Expand Up @@ -495,3 +501,64 @@ func runDoctorScriptType(ctx *cli.Context) ([]string, error) {
}
return []string{fmt.Sprintf("ScriptType %s is on the current PATH at %s", setting.ScriptType, path)}, nil
}

func runDoctorCheckDBConsistency(ctx *cli.Context) ([]string, error) {
guillep2k marked this conversation as resolved.
Show resolved Hide resolved
_, committer, err := models.TxDBContext()
6543 marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return nil, err
}
sess := committer.(models.Engine)
defer committer.Close()
var results []string

//find issues without existing repository
count, err := sess.Table("issue").
Join("LEFT", "repository", "issue.repo_id=repository.id").
Where("repository.id is NULL").
Count("id")
if err != nil {
return nil, err
}
if count > 0 {
if ctx.Bool("fix") {
if _, err = sess.In("id", builder.Select("issue.id").
From("issue").
Join("LEFT", "repository", "issue.repo_id=repository.id").
Where(builder.IsNull{"repository.id"})).
Delete(models.Issue{}); err != nil {
6543 marked this conversation as resolved.
Show resolved Hide resolved
return nil, err
}
results = append(results, fmt.Sprintf("%d issues without existing repository deleted", count))
} else {
results = append(results, fmt.Sprintf("%d issues without existing repository", count))
}
}

//find tracked times without existing issues/pulls
count, err = sess.Table("tracked_time").
Join("LEFT", "issue", "tracked_time.issue_id=issue.id").
Where("issue.id is NULL").
Count("id")
if err != nil {
return nil, err
}
if count > 0 {
if ctx.Bool("fix") {
if _, err = sess.In("id", builder.Select("tracked_time.id").
From("tracked_time").
Join("LEFT", "issue", "tracked_time.issue_id=issue.id").
Where(builder.IsNull{"issue.id"})).
Delete(models.TrackedTime{}); err != nil {
return nil, err
}
results = append(results, fmt.Sprintf("%d tracked times without existing issue deleted", count))
} else {
results = append(results, fmt.Sprintf("%d tracked times without existing issue", count))
}
}

if ctx.Bool("fix") {
return results, committer.Commit()
}
return results, nil
}