mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +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
	 zeripath
					zeripath