diff --git a/modules/queue/queue_disk_channel.go b/modules/queue/queue_disk_channel.go
index 895c8ce91..6bb5a1be9 100644
--- a/modules/queue/queue_disk_channel.go
+++ b/modules/queue/queue_disk_channel.go
@@ -6,6 +6,7 @@ package queue
 
 import (
 	"context"
+	"sync"
 	"time"
 
 	"code.gitea.io/gitea/modules/log"
@@ -33,6 +34,7 @@ type PersistableChannelQueueConfiguration struct {
 type PersistableChannelQueue struct {
 	*ChannelQueue
 	delayedStarter
+	lock   sync.Mutex
 	closed chan struct{}
 }
 
diff --git a/modules/queue/queue_wrapped.go b/modules/queue/queue_wrapped.go
index 0e948bae2..c52e6e467 100644
--- a/modules/queue/queue_wrapped.go
+++ b/modules/queue/queue_wrapped.go
@@ -28,7 +28,6 @@ type WrappedQueueConfiguration struct {
 }
 
 type delayedStarter struct {
-	lock        sync.Mutex
 	internal    Queue
 	underlying  Type
 	cfg         interface{}
@@ -89,6 +88,7 @@ func (q *delayedStarter) setInternal(atShutdown func(context.Context, func()), h
 // WrappedQueue wraps a delayed starting queue
 type WrappedQueue struct {
 	delayedStarter
+	lock     sync.Mutex
 	handle   HandlerFunc
 	exemplar interface{}
 	channel  chan Data