mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 01:34:27 +00:00 
			
		
		
		
	Pause queues (#15928)
* Start adding mechanism to return unhandled data Signed-off-by: Andrew Thornton <art27@cantab.net> * Create pushback interface Signed-off-by: Andrew Thornton <art27@cantab.net> * Add Pausable interface to WorkerPool and Manager Signed-off-by: Andrew Thornton <art27@cantab.net> * Implement Pausable and PushBack for the bytefifos Signed-off-by: Andrew Thornton <art27@cantab.net> * Implement Pausable and Pushback for ChannelQueues and ChannelUniqueQueues Signed-off-by: Andrew Thornton <art27@cantab.net> * Wire in UI for pausing Signed-off-by: Andrew Thornton <art27@cantab.net> * add testcases and fix a few issues Signed-off-by: Andrew Thornton <art27@cantab.net> * fix build Signed-off-by: Andrew Thornton <art27@cantab.net> * prevent "race" in the test Signed-off-by: Andrew Thornton <art27@cantab.net> * fix jsoniter mismerge Signed-off-by: Andrew Thornton <art27@cantab.net> * fix conflicts Signed-off-by: Andrew Thornton <art27@cantab.net> * fix format Signed-off-by: Andrew Thornton <art27@cantab.net> * Add warnings for no worker configurations and prevent data-loss with redis/levelqueue Signed-off-by: Andrew Thornton <art27@cantab.net> * Use StopTimer Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		@@ -105,6 +105,18 @@ func (fifo *RedisUniqueByteFIFO) PushFunc(ctx context.Context, data []byte, fn f
 | 
			
		||||
	return fifo.client.RPush(ctx, fifo.queueName, data).Err()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PushBack pushes data to the top of the fifo
 | 
			
		||||
func (fifo *RedisUniqueByteFIFO) PushBack(ctx context.Context, data []byte) error {
 | 
			
		||||
	added, err := fifo.client.SAdd(ctx, fifo.setName, data).Result()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if added == 0 {
 | 
			
		||||
		return ErrAlreadyInQueue
 | 
			
		||||
	}
 | 
			
		||||
	return fifo.client.LPush(ctx, fifo.queueName, data).Err()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Pop pops data from the start of the fifo
 | 
			
		||||
func (fifo *RedisUniqueByteFIFO) Pop(ctx context.Context) ([]byte, error) {
 | 
			
		||||
	data, err := fifo.client.LPop(ctx, fifo.queueName).Bytes()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user