mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		@@ -26,23 +26,38 @@ func deleteOrphanedAttachments(x *xorm.Engine) error {
 | 
				
			|||||||
	sess := x.NewSession()
 | 
						sess := x.NewSession()
 | 
				
			||||||
	defer sess.Close()
 | 
						defer sess.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := sess.BufferSize(setting.Database.IterateBufferSize).
 | 
						var limit = setting.Database.IterateBufferSize
 | 
				
			||||||
		Where("`issue_id` = 0 and (`release_id` = 0 or `release_id` not in (select `id` from `release`))").Cols("uuid").
 | 
						if limit <= 0 {
 | 
				
			||||||
		Iterate(new(Attachment),
 | 
							limit = 50
 | 
				
			||||||
			func(idx int, bean interface{}) error {
 | 
						}
 | 
				
			||||||
				attachment := bean.(*Attachment)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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 {
 | 
								if err := os.RemoveAll(models.AttachmentLocalPath(attachment.UUID)); err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
				_, err := sess.ID(attachment.ID).NoAutoCondition().Delete(attachment)
 | 
					 | 
				
			||||||
				return err
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							if len(attachements) < limit {
 | 
				
			||||||
	return sess.Commit()
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user