phpxin opened a new issue #523:
URL: https://github.com/apache/rocketmq-client-go/issues/523


   **Environment :**
   
   OS: macos  
   RocketMQ: rocketmq-all-4.7.1-bin-release  
   rocketmq-client-go: v2.1.0-rc4 and master   
   
   
   **Problem :**
   
   I used PullConsumer to consume messages. It PANIC when waiting for new 
message.
   
   The stacktrack is :
   
   ```
   panic: runtime error: invalid memory address or nil pointer dereference
   [signal SIGSEGV: segmentation violation code=0x1 addr=0x90 pc=0x1385add]
   
   goroutine 51 [running]:
   
github.com/apache/rocketmq-client-go/v2/internal.(*namesrvs).cleanOfflineBroker(0x0)
        
/Users/leo/Documents/gopath/src/github.com/apache/rocketmq-client-go/internal/route.go:55
 +0x2d
   
github.com/apache/rocketmq-client-go/v2/internal.(*rmqClient).Start.func1.3.1()
        
/Users/leo/Documents/gopath/src/github.com/apache/rocketmq-client-go/internal/client.go:314
 +0x36
   github.com/apache/rocketmq-client-go/v2/internal.(*rmqClient).Start.func1.3()
        
/Users/leo/Documents/gopath/src/github.com/apache/rocketmq-client-go/internal/client.go:319
 +0x7a
   github.com/apache/rocketmq-client-go/v2/primitive.WithRecover(0xc00009bb80)
        
/Users/leo/Documents/gopath/src/github.com/apache/rocketmq-client-go/primitive/base.go:96
 +0x49
   created by 
github.com/apache/rocketmq-client-go/v2/internal.(*rmqClient).Start.func1
        
/Users/leo/Documents/gopath/src/github.com/apache/rocketmq-client-go/internal/client.go:312
 +0x160
   exit status 2
   ```
   
   **Solution :**
   
   Use this code will make it work well.
   
   consumer/pull_consumer.go:84 in function NewPullConsumer 
   
   ```golang
   func NewPullConsumer(options ...Option) (*defaultPullConsumer, error) {
        defaultOpts := defaultPullConsumerOptions()
        for _, apply := range options {
                apply(&defaultOpts)
        }
   
        srvs, err := internal.NewNamesrv(defaultOpts.Resolver)
        if err != nil {
                return nil, errors.Wrap(err, "new Namesrv failed.")
        }
   
        defaultOpts.ClientOptions.Namesrv = srvs // todo solve BUG - panic: 
runtime error: invalid memory address or nil pointer dereference
   
        dc := &defaultConsumer{
                client:        
internal.GetOrNewRocketMQClient(defaultOpts.ClientOptions, nil),
                consumerGroup: defaultOpts.GroupName,
                cType:         _PullConsume,
                state:         int32(internal.StateCreateJust),
                prCh:          make(chan PullRequest, 4),
                model:         defaultOpts.ConsumerModel,
                option:        defaultOpts,
   
                namesrv: srvs,
        }
   
        c := &defaultPullConsumer{
                defaultConsumer: dc,
        }
        return c, nil
   }
   ```
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to