Skip to content

Commit 673760e

Browse files
authored
[ISSUE apache#735] centralized management errors (apache#708)
* centralized management errors * update missed * update missed * fix import cycle * go fmt
1 parent 4065610 commit 673760e

20 files changed

+102
-111
lines changed

api.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ package rocketmq
1919

2020
import (
2121
"context"
22-
23-
"github.com/pkg/errors"
22+
"github.com/apache/rocketmq-client-go/v2/errors"
2423

2524
"github.com/apache/rocketmq-client-go/v2/consumer"
2625
"github.com/apache/rocketmq-client-go/v2/primitive"
@@ -134,5 +133,5 @@ type PullConsumer interface {
134133
//
135134
// The PullConsumer will be supported in next release
136135
func NewPullConsumer(opts ...consumer.Option) (PullConsumer, error) {
137-
return nil, errors.New("pull consumer has not supported")
136+
return nil, errors.ErrPullConsumer
138137
}

benchmark/stable.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
package main
1919

2020
import (
21-
"errors"
2221
"flag"
2322
"fmt"
23+
"github.com/apache/rocketmq-client-go/v2/errors"
2424
"os"
2525
"os/signal"
2626
"syscall"
@@ -52,23 +52,23 @@ func (st *stableTest) buildFlags(name string) {
5252

5353
func (st *stableTest) checkFlag() error {
5454
if st.topic == "" {
55-
return errors.New("empty topic")
55+
return errors.ErrEmptyTopic
5656
}
5757

5858
if st.nameSrv == "" {
59-
return errors.New("empty namesrv")
59+
return errors.ErrEmptyNameSrv
6060
}
6161

6262
if st.groupID == "" {
63-
return errors.New("empty group id")
63+
return errors.ErrEmptyGroupID
6464
}
6565

6666
if st.testMin <= 0 {
67-
return errors.New("test miniutes must be positive integer")
67+
return errors.ErrTestMin
6868
}
6969

7070
if st.opIntervalSec <= 0 {
71-
return errors.New("operation interval must be positive integer")
71+
return errors.ErrOperationInterval
7272
}
7373

7474
return nil
@@ -114,7 +114,7 @@ func (stp *stableTestProducer) checkFlag() error {
114114
return err
115115
}
116116
if stp.bodySize <= 0 {
117-
return errors.New("message body size must be positive integer")
117+
return errors.ErrMessageBody
118118
}
119119

120120
return nil
@@ -187,7 +187,7 @@ func (stc *stableTestConsumer) checkFlag() error {
187187
}
188188

189189
if stc.expression == "" {
190-
return errors.New("empty expression")
190+
return errors.ErrEmptyExpression
191191
}
192192
return nil
193193
}

consumer/consumer.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package consumer
2020
import (
2121
"context"
2222
"fmt"
23+
"github.com/apache/rocketmq-client-go/v2/errors"
2324
"sort"
2425
"strconv"
2526
"strings"
@@ -29,7 +30,6 @@ import (
2930

3031
jsoniter "github.com/json-iterator/go"
3132

32-
"github.com/pkg/errors"
3333
"github.com/tidwall/gjson"
3434

3535
"github.com/apache/rocketmq-client-go/v2/internal"
@@ -68,11 +68,6 @@ const (
6868
_SubAll = "*"
6969
)
7070

71-
var (
72-
ErrCreated = errors.New("consumer group has been created")
73-
ErrBrokerNotFound = errors.New("broker can not found")
74-
)
75-
7671
// Message model defines the way how messages are delivered to each consumer clients.
7772
// </p>
7873
//
@@ -822,7 +817,7 @@ func (dc *defaultConsumer) pullInner(ctx context.Context, queue *primitive.Messa
822817
rlog.Warning("no broker found for mq", map[string]interface{}{
823818
rlog.LogKeyMessageQueue: queue,
824819
})
825-
return nil, ErrBrokerNotFound
820+
return nil, errors.ErrBrokerNotFound
826821
}
827822

828823
if brokerResult.Slave {

consumer/pull_consumer.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ package consumer
2020
import (
2121
"context"
2222
"fmt"
23+
errors2 "github.com/apache/rocketmq-client-go/v2/errors"
2324
"sync"
2425
"sync/atomic"
2526

2627
"github.com/pkg/errors"
2728

2829
"github.com/apache/rocketmq-client-go/v2/internal"
29-
"github.com/apache/rocketmq-client-go/v2/internal/utils"
3030
"github.com/apache/rocketmq-client-go/v2/primitive"
3131
"github.com/apache/rocketmq-client-go/v2/rlog"
3232
)
@@ -174,15 +174,15 @@ func (dc *defaultConsumer) checkPull(ctx context.Context, mq *primitive.MessageQ
174174
}
175175

176176
if mq == nil {
177-
return utils.ErrMQEmpty
177+
return errors2.ErrMQEmpty
178178
}
179179

180180
if offset < 0 {
181-
return utils.ErrOffset
181+
return errors2.ErrOffset
182182
}
183183

184184
if numbers <= 0 {
185-
return utils.ErrNumbers
185+
return errors2.ErrNumbers
186186
}
187187
return nil
188188
}

consumer/push_consumer.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package consumer
2020
import (
2121
"context"
2222
"fmt"
23+
errors2 "github.com/apache/rocketmq-client-go/v2/errors"
2324
"math"
2425
"strconv"
2526
"strings"
@@ -147,7 +148,7 @@ func (pc *pushConsumer) Start() error {
147148
rlog.Error("the consumer group has been created, specify another one", map[string]interface{}{
148149
rlog.LogKeyConsumerGroup: pc.consumerGroup,
149150
})
150-
err = ErrCreated
151+
err = errors2.ErrCreated
151152
return
152153
}
153154

@@ -233,7 +234,7 @@ func (pc *pushConsumer) Subscribe(topic string, selector MessageSelector,
233234
f func(context.Context, ...*primitive.MessageExt) (ConsumeResult, error)) error {
234235
if atomic.LoadInt32(&pc.state) == int32(internal.StateStartFailed) ||
235236
atomic.LoadInt32(&pc.state) == int32(internal.StateShutdown) {
236-
return errors.New("cannot subscribe topic since client either failed to start or has been shutdown.")
237+
return errors2.ErrStartTopic
237238
}
238239

239240
if pc.option.Namespace != "" {

errors.go

Lines changed: 0 additions & 29 deletions
This file was deleted.

errors/errors.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
Licensed to the Apache Software Foundation (ASF) under one or more
3+
contributor license agreements. See the NOTICE file distributed with
4+
this work for additional information regarding copyright ownership.
5+
The ASF licenses this file to You under the Apache License, Version 2.0
6+
(the "License"); you may not use this file except in compliance with
7+
the License. You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
*/
17+
18+
package errors
19+
20+
import "errors"
21+
22+
var (
23+
ErrRequestTimeout = errors.New("equest timeout")
24+
ErrMQEmpty = errors.New("MessageQueue is nil")
25+
ErrOffset = errors.New("offset < 0")
26+
ErrNumbers = errors.New("numbers < 0")
27+
ErrEmptyTopic = errors.New("empty topic")
28+
ErrEmptyNameSrv = errors.New("empty namesrv")
29+
ErrEmptyGroupID = errors.New("empty group id")
30+
ErrTestMin = errors.New("test minutes must be positive integer")
31+
ErrOperationInterval = errors.New("operation interval must be positive integer")
32+
ErrMessageBody = errors.New("message body size must be positive integer")
33+
ErrEmptyExpression = errors.New("empty expression")
34+
ErrCreated = errors.New("consumer group has been created")
35+
ErrBrokerNotFound = errors.New("broker can not found")
36+
ErrStartTopic = errors.New("cannot subscribe topic since client either failed to start or has been shutdown.")
37+
ErrResponse = errors.New("response error")
38+
ErrCompressLevel = errors.New("unsupported compress level")
39+
ErrUnknownIP = errors.New("unknown IP address")
40+
ErrService = errors.New("service close is not running, please check")
41+
ErrTopicNotExist = errors.New("topic not exist")
42+
ErrNotExisted = errors.New("not existed")
43+
ErrNoNameserver = errors.New("nameServerAddrs can't be empty.")
44+
ErrMultiIP = errors.New("multiple IP addr does not support")
45+
ErrIllegalIP = errors.New("IP addr error")
46+
ErrTopicEmpty = errors.New("topic is nil")
47+
ErrMessageEmpty = errors.New("message is nil")
48+
ErrNotRunning = errors.New("producer not started")
49+
ErrPullConsumer = errors.New("pull consumer has not supported")
50+
)

examples/consumer/pull/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package main
2020
import (
2121
"context"
2222
"fmt"
23+
"github.com/apache/rocketmq-client-go/v2/errors"
2324
"time"
2425

2526
"github.com/apache/rocketmq-client-go/v2"
@@ -52,7 +53,7 @@ func main() {
5253
for {
5354
resp, err := c.PullFrom(ctx, queue, offset, 10)
5455
if err != nil {
55-
if err == rocketmq.ErrRequestTimeout {
56+
if err == errors.ErrRequestTimeout {
5657
fmt.Printf("timeout \n")
5758
time.Sleep(1 * time.Second)
5859
continue

internal/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"context"
2222
"errors"
2323
"fmt"
24+
errors2 "github.com/apache/rocketmq-client-go/v2/errors"
2425
"net"
2526
"os"
2627
"strconv"
@@ -55,7 +56,7 @@ const (
5556
)
5657

5758
var (
58-
ErrServiceState = errors.New("service close is not running, please check")
59+
ErrServiceState = errors2.ErrService
5960

6061
_VIPChannelEnable = false
6162
)

internal/remote/future.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ package remote
1919

2020
import (
2121
"context"
22+
"github.com/apache/rocketmq-client-go/v2/errors"
2223
"sync"
23-
24-
"github.com/apache/rocketmq-client-go/v2/internal/utils"
2524
)
2625

2726
// ResponseFuture
@@ -62,7 +61,7 @@ func (r *ResponseFuture) waitResponse() (*RemotingCommand, error) {
6261
case <-r.Done:
6362
cmd, err = r.ResponseCommand, r.Err
6463
case <-r.ctx.Done():
65-
err = utils.ErrRequestTimeout
64+
err = errors.ErrRequestTimeout
6665
r.Err = err
6766
}
6867
return cmd, err

internal/remote/remote_client_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,14 @@ package remote
1919
import (
2020
"bytes"
2121
"context"
22-
"errors"
22+
"github.com/apache/rocketmq-client-go/v2/errors"
2323
"math/rand"
2424
"net"
2525
"reflect"
2626
"sync"
2727
"testing"
2828
"time"
2929

30-
"github.com/apache/rocketmq-client-go/v2/internal/utils"
31-
3230
"github.com/stretchr/testify/assert"
3331
)
3432

@@ -80,12 +78,12 @@ func TestResponseFutureWaitResponse(t *testing.T) {
8078
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(1000))
8179
defer cancel()
8280
future := NewResponseFuture(ctx, 10, nil)
83-
if _, err := future.waitResponse(); err != utils.ErrRequestTimeout {
81+
if _, err := future.waitResponse(); err != errors.ErrRequestTimeout {
8482
t.Errorf("wrong ResponseFuture waitResponse. want=%v, got=%v",
85-
utils.ErrRequestTimeout, err)
83+
errors.ErrRequestTimeout, err)
8684
}
8785
future = NewResponseFuture(context.Background(), 10, nil)
88-
responseError := errors.New("response error")
86+
responseError := errors.ErrResponse
8987
go func() {
9088
time.Sleep(100 * time.Millisecond)
9189
future.Err = responseError
@@ -295,7 +293,7 @@ func TestInvokeAsyncTimeout(t *testing.T) {
295293
err := client.InvokeAsync(ctx, addr, clientSendRemtingCommand,
296294
func(r *ResponseFuture) {
297295
assert.NotNil(t, r.Err)
298-
assert.Equal(t, utils.ErrRequestTimeout, r.Err)
296+
assert.Equal(t, errors.ErrRequestTimeout, r.Err)
299297
wg.Done()
300298
})
301299
assert.Nil(t, err, "failed to invokeSync.")

internal/route.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package internal
1919

2020
import (
2121
"context"
22-
"errors"
22+
"github.com/apache/rocketmq-client-go/v2/errors"
2323
"math/rand"
2424
"sort"
2525
"strconv"
@@ -46,10 +46,6 @@ const (
4646
MasterId = int64(0)
4747
)
4848

49-
var (
50-
ErrTopicNotExist = errors.New("topic not exist")
51-
)
52-
5349
func (s *namesrvs) cleanOfflineBroker() {
5450
// TODO optimize
5551
s.lockNamesrv.Lock()
@@ -434,7 +430,7 @@ func (s *namesrvs) queryTopicRouteInfoFromServer(topic string) (*TopicRouteData,
434430
}
435431
return routeData, nil
436432
case ResTopicNotExist:
437-
return nil, ErrTopicNotExist
433+
return nil, errors.ErrTopicNotExist
438434
default:
439435
return nil, primitive.NewMQClientErr(response.Code, response.Remark)
440436
}

0 commit comments

Comments
 (0)