This is an automated email from the ASF dual-hosted git repository.

jerrypeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 862285f  Fix seg fault when producer with same name is created. (#110)
862285f is described below

commit 862285fee18a213289062d855156f44823e5a724
Author: cckellogg <cckell...@gmail.com>
AuthorDate: Thu Dec 5 12:28:32 2019 -0800

    Fix seg fault when producer with same name is created. (#110)
---
 pulsar/{impl_producer.go => producer_impl.go}      |  3 ++-
 ...partition_producer.go => producer_partition.go} |  2 +-
 pulsar/producer_test.go                            | 28 ++++++++++++++++++++++
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/pulsar/impl_producer.go b/pulsar/producer_impl.go
similarity index 98%
rename from pulsar/impl_producer.go
rename to pulsar/producer_impl.go
index 6054402..ef0119e 100644
--- a/pulsar/impl_producer.go
+++ b/pulsar/producer_impl.go
@@ -93,8 +93,9 @@ func newProducer(client *client, options *ProducerOptions) 
(*producer, error) {
                if ok {
                        if pe.err != nil {
                                err = pe.err
+                       } else {
+                               p.producers[pe.partition] = pe.prod
                        }
-                       p.producers[pe.partition] = pe.prod
                }
        }
 
diff --git a/pulsar/impl_partition_producer.go b/pulsar/producer_partition.go
similarity index 99%
rename from pulsar/impl_partition_producer.go
rename to pulsar/producer_partition.go
index 4e2ffd9..474401a 100644
--- a/pulsar/impl_partition_producer.go
+++ b/pulsar/producer_partition.go
@@ -107,7 +107,7 @@ func newPartitionProducer(client *client, topic string, 
options *ProducerOptions
                return nil, err
        }
 
-       p.log = p.log.WithField("name", *p.producerName)
+       p.log = p.log.WithField("name", p.producerName)
        p.log.Info("Created producer")
        p.state = producerReady
 
diff --git a/pulsar/producer_test.go b/pulsar/producer_test.go
index d6c8599..196c7f3 100644
--- a/pulsar/producer_test.go
+++ b/pulsar/producer_test.go
@@ -495,3 +495,31 @@ func TestNonPersistentTopic(t *testing.T) {
        assert.Nil(t, err)
        defer consumer.Close()
 }
+
+func TestProducerDuplicateNameOnSameTopic(t *testing.T) {
+       client, err := NewClient(ClientOptions{
+               URL: serviceURL,
+       })
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer client.Close()
+
+       topicName := newTopicName()
+       producerName := "my-producer"
+
+       p1, err := client.CreateProducer(ProducerOptions{
+               Topic: topicName,
+               Name:  producerName,
+       })
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer p1.Close()
+
+       _, err = client.CreateProducer(ProducerOptions{
+               Topic: topicName,
+               Name:  producerName,
+       })
+       assert.NotNil(t, err, "expected error when creating producer with same 
name")
+}

Reply via email to