mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Backport #15733 * Queue manager FlushAll can loop rapidly - add delay Add delay within FlushAll to prevent rapid loop when workers are busy Signed-off-by: Andrew Thornton <art27@cantab.net> * as per lunny Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -198,17 +198,20 @@ func (m *Manager) FlushAll(baseCtx context.Context, timeout time.Duration) error
 | 
				
			|||||||
					wg.Done()
 | 
										wg.Done()
 | 
				
			||||||
				}(mq)
 | 
									}(mq)
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				log.Debug("Queue: %s is non-empty but is not flushable - adding 100 millisecond wait", mq.Name)
 | 
									log.Debug("Queue: %s is non-empty but is not flushable", mq.Name)
 | 
				
			||||||
				go func() {
 | 
									wg.Done()
 | 
				
			||||||
					<-time.After(100 * time.Millisecond)
 | 
					 | 
				
			||||||
					wg.Done()
 | 
					 | 
				
			||||||
				}()
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if allEmpty {
 | 
							if allEmpty {
 | 
				
			||||||
 | 
								log.Debug("All queues are empty")
 | 
				
			||||||
			break
 | 
								break
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							// Ensure there are always at least 100ms between loops but not more if we've actually been doing some flushign
 | 
				
			||||||
 | 
							// but don't delay cancellation here.
 | 
				
			||||||
 | 
							select {
 | 
				
			||||||
 | 
							case <-ctx.Done():
 | 
				
			||||||
 | 
							case <-time.After(100 * time.Millisecond):
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		wg.Wait()
 | 
							wg.Wait()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user