Fix Memory Leak in Kafka Producer
This commit addresses an issue where the sarama kafka library leaks memory when a connection closes unless the metrics configuration that was passed to new connection is also closed. Fixes #613
This commit is contained in:
parent
df8d3d7b12
commit
ef5a428591
@ -23,6 +23,7 @@ type KafkaConn struct {
|
|||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
ep Endpoint
|
ep Endpoint
|
||||||
conn sarama.SyncProducer
|
conn sarama.SyncProducer
|
||||||
|
cfg *sarama.Config
|
||||||
ex bool
|
ex bool
|
||||||
t time.Time
|
t time.Time
|
||||||
}
|
}
|
||||||
@ -46,6 +47,8 @@ func (conn *KafkaConn) close() {
|
|||||||
if conn.conn != nil {
|
if conn.conn != nil {
|
||||||
conn.conn.Close()
|
conn.conn.Close()
|
||||||
conn.conn = nil
|
conn.conn = nil
|
||||||
|
conn.cfg.MetricRegistry.UnregisterAll()
|
||||||
|
conn.cfg = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,6 +74,7 @@ func (conn *KafkaConn) Send(msg string) error {
|
|||||||
log.Debugf("building kafka tls config")
|
log.Debugf("building kafka tls config")
|
||||||
tlsConfig, err := newKafkaTLSConfig(conn.ep.Kafka.CertFile, conn.ep.Kafka.KeyFile, conn.ep.Kafka.CACertFile)
|
tlsConfig, err := newKafkaTLSConfig(conn.ep.Kafka.CertFile, conn.ep.Kafka.KeyFile, conn.ep.Kafka.CACertFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
cfg.MetricRegistry.UnregisterAll()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
cfg.Net.TLS.Enable = true
|
cfg.Net.TLS.Enable = true
|
||||||
@ -86,10 +90,12 @@ func (conn *KafkaConn) Send(msg string) error {
|
|||||||
|
|
||||||
c, err := sarama.NewSyncProducer([]string{uri}, cfg)
|
c, err := sarama.NewSyncProducer([]string{uri}, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
cfg.MetricRegistry.UnregisterAll()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
conn.conn = c
|
conn.conn = c
|
||||||
|
conn.cfg = cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse json again to get out info for our kafka key
|
// parse json again to get out info for our kafka key
|
||||||
|
Loading…
x
Reference in New Issue
Block a user