Fix migration bug on v96.go (#10572)
This commit is contained in:
		
							parent
							
								
									e9afd74bbe
								
							
						
					
					
						commit
						753c0675c1
					
				|  | @ -26,23 +26,38 @@ func deleteOrphanedAttachments(x *xorm.Engine) error { | |||
| 	sess := x.NewSession() | ||||
| 	defer sess.Close() | ||||
| 
 | ||||
| 	err := sess.BufferSize(setting.Database.IterateBufferSize). | ||||
| 		Where("`issue_id` = 0 and (`release_id` = 0 or `release_id` not in (select `id` from `release`))").Cols("uuid"). | ||||
| 		Iterate(new(Attachment), | ||||
| 			func(idx int, bean interface{}) error { | ||||
| 				attachment := bean.(*Attachment) | ||||
| 
 | ||||
| 				if err := os.RemoveAll(models.AttachmentLocalPath(attachment.UUID)); err != nil { | ||||
| 					return err | ||||
| 				} | ||||
| 
 | ||||
| 				_, err := sess.ID(attachment.ID).NoAutoCondition().Delete(attachment) | ||||
| 				return err | ||||
| 			}) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	var limit = setting.Database.IterateBufferSize | ||||
| 	if limit <= 0 { | ||||
| 		limit = 50 | ||||
| 	} | ||||
| 
 | ||||
| 	return sess.Commit() | ||||
| 	for { | ||||
| 		attachements := make([]Attachment, 0, limit) | ||||
| 		if err := sess.Where("`issue_id` = 0 and (`release_id` = 0 or `release_id` not in (select `id` from `release`))"). | ||||
| 			Cols("id, uuid").Limit(limit). | ||||
| 			Asc("id"). | ||||
| 			Find(&attachements); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if len(attachements) == 0 { | ||||
| 			return nil | ||||
| 		} | ||||
| 
 | ||||
| 		var ids = make([]int64, 0, limit) | ||||
| 		for _, attachment := range attachements { | ||||
| 			ids = append(ids, attachment.ID) | ||||
| 		} | ||||
| 		if _, err := sess.In("id", ids).Delete(new(Attachment)); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 
 | ||||
| 		for _, attachment := range attachements { | ||||
| 			if err := os.RemoveAll(models.AttachmentLocalPath(attachment.UUID)); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 		if len(attachements) < limit { | ||||
| 			return nil | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue