Fix gcplogs memory/connection leak
The cloud logging client should be closed when the log driver is closed. Otherwise dockerd will keep a gRPC connection to the logging endpoint open indefinitely.
This results in a slow leak of tcp sockets (1) and memory (~200Kb) any time that a container using `--log-driver=gcplogs` is terminates.
Signed-off-by: Patrick Haas <patrickhaas@google.com>
(cherry picked from commit ef553e14a4
)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
88623e101c
commit
74c0c5b7f1
1 changed files with 3 additions and 1 deletions
|
@ -53,6 +53,7 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
type gcplogs struct {
|
type gcplogs struct {
|
||||||
|
client *logging.Client
|
||||||
logger *logging.Logger
|
logger *logging.Logger
|
||||||
instance *instanceInfo
|
instance *instanceInfo
|
||||||
container *containerInfo
|
container *containerInfo
|
||||||
|
@ -169,6 +170,7 @@ func New(info logger.Info) (logger.Logger, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
l := &gcplogs{
|
l := &gcplogs{
|
||||||
|
client: c,
|
||||||
logger: lg,
|
logger: lg,
|
||||||
container: &containerInfo{
|
container: &containerInfo{
|
||||||
Name: info.ContainerName,
|
Name: info.ContainerName,
|
||||||
|
@ -236,7 +238,7 @@ func (l *gcplogs) Log(m *logger.Message) error {
|
||||||
|
|
||||||
func (l *gcplogs) Close() error {
|
func (l *gcplogs) Close() error {
|
||||||
l.logger.Flush()
|
l.logger.Flush()
|
||||||
return nil
|
return l.client.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *gcplogs) Name() string {
|
func (l *gcplogs) Name() string {
|
||||||
|
|
Loading…
Reference in a new issue