File tree Expand file tree Collapse file tree 3 files changed +32
-0
lines changed Expand file tree Collapse file tree 3 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -121,6 +121,7 @@ func (q *Queue) work() {
121
121
atomic .AddInt32 (& q .runningWorkers , - 1 )
122
122
if err := recover (); err != nil {
123
123
q .logger .Error (err )
124
+ q .logger .Infof ("restart the new worker: %d" , num )
124
125
go q .work ()
125
126
}
126
127
}()
Original file line number Diff line number Diff line change @@ -93,3 +93,31 @@ func TestWorkerStatus(t *testing.T) {
93
93
q .Shutdown ()
94
94
q .Wait ()
95
95
}
96
+
97
+ func TestWorkerPanic (t * testing.T ) {
98
+ w := & queueWorker {
99
+ messages : make (chan QueuedMessage , 10 ),
100
+ }
101
+ q , err := NewQueue (
102
+ WithWorker (w ),
103
+ WithWorkerCount (2 ),
104
+ )
105
+ assert .NoError (t , err )
106
+ assert .NotNil (t , q )
107
+
108
+ q .Queue (mockMessage {
109
+ message : "foobar" ,
110
+ })
111
+ q .Queue (mockMessage {
112
+ message : "foobar" ,
113
+ })
114
+ q .Queue (mockMessage {
115
+ message : "panic" ,
116
+ })
117
+ q .Start ()
118
+ time .Sleep (30 * time .Millisecond )
119
+ assert .Equal (t , 2 , q .Workers ())
120
+ q .Shutdown ()
121
+ q .Wait ()
122
+ assert .Equal (t , 0 , q .Workers ())
123
+ }
Original file line number Diff line number Diff line change @@ -44,6 +44,9 @@ func (w *queueWorker) AfterRun() error { return nil }
44
44
func (w * queueWorker ) Run (chan struct {}) error {
45
45
for msg := range w .messages {
46
46
log .Println ("got message" , msg )
47
+ if string (msg .Bytes ()) == "panic" {
48
+ panic ("show panic" )
49
+ }
47
50
time .Sleep (100 * time .Millisecond )
48
51
}
49
52
return nil
You can’t perform that action at this time.
0 commit comments