Skip to content

Commit cb53ec4

Browse files
author
xiemalin
committed
fix nil panic while free subsribe in while loop
1 parent e0cf9f0 commit cb53ec4

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

filefanoutqueue_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestFanoutQueueOpenTwice(t *testing.T) {
2929
path := Tempfile()
3030
defer clearFiles(path, "fanoutqueue")
3131

32-
Convey("TestFanoutQueueOpen", t, func() {
32+
Convey("TestFanoutQueueOpenTwice", t, func() {
3333

3434
fq := FileFanoutQueue{}
3535
err := fq.Open(path, "fanoutqueue", nil)
@@ -48,7 +48,7 @@ func TestFanoutQueueIsEmpty(t *testing.T) {
4848
clearFiles(path, "fanoutqueue")
4949
defer clearFiles(path, "fanoutqueue")
5050

51-
Convey("TestFanoutQueueOpen", t, func() {
51+
Convey("TestFanoutQueueIsEmpty", t, func() {
5252

5353
fanoutID := int64(100)
5454
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID)
@@ -70,7 +70,7 @@ func TestFanoutQueueSize(t *testing.T) {
7070
clearFiles(path, "fanoutqueue")
7171
defer clearFiles(path, "fanoutqueue")
7272

73-
Convey("TestFanoutQueueOpen", t, func() {
73+
Convey("TestFanoutQueueSize", t, func() {
7474
fanoutID := int64(100)
7575
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID)
7676

@@ -93,7 +93,7 @@ func TestFanoutQueueEnqueue(t *testing.T) {
9393
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID)
9494
defer clearFiles(path, "fanoutqueue")
9595

96-
Convey("TestFanoutQueueOpen", t, func() {
96+
Convey("TestFanoutQueueEnqueue", t, func() {
9797
fq := FileFanoutQueue{}
9898
err := fq.Open(path, "fanoutqueue", nil)
9999

@@ -129,7 +129,7 @@ func TestFanoutQueueEnqueueDequeue(t *testing.T) {
129129
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID1)
130130
defer clearFiles(path, "fanoutqueue")
131131

132-
Convey("TestFanoutQueueOpen", t, func() {
132+
Convey("TestFanoutQueueEnqueueDequeue", t, func() {
133133
fq := FileFanoutQueue{}
134134
err := fq.Open(path, "fanoutqueue", nil)
135135

@@ -158,7 +158,7 @@ func TestFanoutQueueEnqueuePeek(t *testing.T) {
158158
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID1)
159159
defer clearFiles(path, "fanoutqueue")
160160

161-
Convey("TestFanoutQueueOpen", t, func() {
161+
Convey("TestFanoutQueueEnqueuePeek", t, func() {
162162

163163
fq := FileFanoutQueue{}
164164
err := fq.Open(path, "fanoutqueue", nil)
@@ -197,7 +197,7 @@ func TestFanoutQueueSkip(t *testing.T) {
197197
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID1)
198198
defer clearFiles(path, "fanoutqueue")
199199

200-
Convey("TestFanoutQueueOpen", t, func() {
200+
Convey("TestFanoutQueueSkip", t, func() {
201201
fq := FileFanoutQueue{}
202202
err := fq.Open(path, "fanoutqueue", nil)
203203

@@ -234,7 +234,7 @@ func TestFanoutQueueSubscribe(t *testing.T) {
234234
defer clearFrontIndexFiles(path, "fanoutqueue", fanoutID1)
235235
defer clearFiles(path, "fanoutqueue")
236236

237-
Convey("TestFanoutQueueOpen", t, func() {
237+
Convey("TestFanoutQueueSubscribe", t, func() {
238238

239239
fq := FileFanoutQueue{}
240240
err := fq.Open(path, "fanoutqueue", nil)

filequeue.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,9 @@ func (q *FileQueue) doLoopSubscribe() {
812812
if bb == nil {
813813
break // queue is empty
814814
}
815-
q.subscriber(index, bb, err)
815+
if q.subscriber != nil {
816+
q.subscriber(index, bb, err)
817+
}
816818
}
817819

818820
loop := <-q.enqueueChan

mmapfactory.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ type DBFactory struct {
2828
}
2929

3030
func (f *DBFactory) acquireDB(index int64) (*DB, error) {
31+
// add map lock
32+
f.lock.Lock()
3133
db := f.dbMap[index]
3234
if db != nil {
35+
f.lock.Unlock()
3336
return db, nil
3437
}
3538

36-
// add map lock
37-
f.lock.Lock()
3839
lock := f.lockMap[index]
3940
if lock == nil {
4041
lock = &(sync.Mutex{})

0 commit comments

Comments
 (0)