gitea/modules/queue
wxiaoguang 84c8ab9fd1
Help to recover from corrupted levelqueue ()
gitea.com experienced the corrupted LevelQueue bug again.

I think the problem is clear now: if the keys in LevelDB went
out-of-sync, the LevelQueue itself doesn't have the ability to recover,
eg:

* LevelQueue.Len() reports 100
* LevelQueue.LPop() reports ErrNotFound = errors.New("no key found")

So it needs to dive into the LevelDB to remove all keys to recover the
corrupted LevelQueue.

More comments are in TestCorruptedLevelQueue.
..
lqinternal Help to recover from corrupted levelqueue ()
backoff.go Rewrite queue ()
base.go Rewrite queue ()
base_channel.go Improve queue & process & stacktrace ()
base_channel_test.go Rewrite queue ()
base_dummy.go Rewrite queue ()
base_levelqueue.go Help to recover from corrupted levelqueue ()
base_levelqueue_common.go Help to recover from corrupted levelqueue ()
base_levelqueue_test.go Help to recover from corrupted levelqueue ()
base_levelqueue_unique.go Help to recover from corrupted levelqueue ()
base_redis.go Improve queue & process & stacktrace ()
base_redis_test.go Kd/fix redis unit test ()
base_test.go Rewrite queue ()
config.go Rewrite queue ()
manager.go Improve queue and logger context ()
manager_test.go Improve queue and logger context ()
queue.go Rewrite queue ()
testhelper.go Rewrite queue ()
workergroup.go Improve queue and logger context ()
workerqueue.go Improve queue and logger context ()
workerqueue_test.go Improve queue and logger context ()