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 <[email protected]>
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")
+}