mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-25 03:19:50 +02:00 
			
		
		
		
	Fix delete user missed some comments (#21067)
There is a mistake in the batched delete comments part of DeleteUser which causes some comments to not be deleted
The code incorrectly updates the `start` of the limit clause resulting in most comments not being deleted.
```go
			if err = e.Where("type=? AND poster_id=?", issues_model.CommentTypeComment, u.ID).Limit(batchSize, start).Find(&comments); err != nil {
```
should be:
```go
			if err = e.Where("type=? AND poster_id=?", issues_model.CommentTypeComment, u.ID).Limit(batchSize, 0).Find(&comments); err != nil {
```
Co-authored-by: zeripath <art27@cantab.net>
			
			
This commit is contained in:
		
							parent
							
								
									b42aaf29ea
								
							
						
					
					
						commit
						bc4cce138a
					
				| @ -102,9 +102,9 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error) | |||||||
| 
 | 
 | ||||||
| 		// Delete Comments | 		// Delete Comments | ||||||
| 		const batchSize = 50 | 		const batchSize = 50 | ||||||
| 		for start := 0; ; start += batchSize { | 		for { | ||||||
| 			comments := make([]*issues_model.Comment, 0, batchSize) | 			comments := make([]*issues_model.Comment, 0, batchSize) | ||||||
| 			if err = e.Where("type=? AND poster_id=?", issues_model.CommentTypeComment, u.ID).Limit(batchSize, start).Find(&comments); err != nil { | 			if err = e.Where("type=? AND poster_id=?", issues_model.CommentTypeComment, u.ID).Limit(batchSize, 0).Find(&comments); err != nil { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
| 			if len(comments) == 0 { | 			if len(comments) == 0 { | ||||||
| @ -202,7 +202,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error) | |||||||
| 	// ***** END: ExternalLoginUser ***** | 	// ***** END: ExternalLoginUser ***** | ||||||
| 
 | 
 | ||||||
| 	if _, err = e.ID(u.ID).Delete(new(user_model.User)); err != nil { | 	if _, err = e.ID(u.ID).Delete(new(user_model.User)); err != nil { | ||||||
| 		return fmt.Errorf("Delete: %v", err) | 		return fmt.Errorf("delete: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user