This commit is contained in:
Liang Ding 2023-01-09 10:34:37 +08:00
parent c631b64d00
commit dc112fd56c
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
2 changed files with 36 additions and 31 deletions

View file

@ -1238,6 +1238,8 @@ func autoFixIndex() {
defer autoFixLock.Unlock() defer autoFixLock.Unlock()
rootUpdatedMap := treenode.GetRootUpdated() rootUpdatedMap := treenode.GetRootUpdated()
dbRootUpdatedMap, err := sql.GetRootUpdated()
if nil == err {
i := -1 i := -1
size := len(rootUpdatedMap) size := len(rootUpdatedMap)
for rootID, updated := range rootUpdatedMap { for rootID, updated := range rootUpdatedMap {
@ -1247,10 +1249,7 @@ func autoFixIndex() {
i++ i++
rootUpdated, err := sql.GetRootUpdated(rootID) rootUpdated := dbRootUpdatedMap[rootID]
if nil != err {
continue
}
if "" == rootUpdated { if "" == rootUpdated {
logging.LogWarnf("not found tree [%s] in database, reindex it", rootID) logging.LogWarnf("not found tree [%s] in database, reindex it", rootID)
reindexTree(rootID, i, size) reindexTree(rootID, i, size)
@ -1271,9 +1270,11 @@ func autoFixIndex() {
continue continue
} }
} }
}
duplicatedRootIDs := sql.GetDuplicatedRootIDs() duplicatedRootIDs := sql.GetDuplicatedRootIDs()
for _, rootID := range duplicatedRootIDs { size := len(duplicatedRootIDs)
for i, rootID := range duplicatedRootIDs {
root := sql.GetBlock(rootID) root := sql.GetBlock(rootID)
if nil == root { if nil == root {
continue continue

View file

@ -581,15 +581,19 @@ func GetBlock(id string) (ret *Block) {
return return
} }
func GetRootUpdated(rootID string) (ret string, err error) { func GetRootUpdated() (ret map[string]string, err error) {
rows, err := query("SELECT updated FROM blocks WHERE root_id = ? AND type = 'd'", rootID) rows, err := query("SELECT root_id, updated FROM blocks WHERE type = 'd'")
if nil != err { if nil != err {
logging.LogErrorf("sql query failed: %s", err) logging.LogErrorf("sql query failed: %s", err)
return return
} }
defer rows.Close() defer rows.Close()
ret = map[string]string{}
for rows.Next() { for rows.Next() {
rows.Scan(&ret) var rootID, updated string
rows.Scan(&rootID, &updated)
ret[rootID] = updated
} }
return return
} }