Problem:
latest yum upgrade on foreman server renders all goferd clients useless and triggers a memory leak
Expected outcome:
goferd to resume normal working operation as soon as the foreman server gets the updates and reboots successfuly
Foreman and Proxy versions:
1.24.3
Foreman and Proxy plugin versions:
rpm -qa | egrep -E ‘gofer|proton’
python-gofer-2.11.9-1.el6.noarch
python-gofer-proton-2.11.9-1.el6.noarch
gofer-2.11.9-1.el6.noarch
python2-qpid-proton-0.32.0-2.el6.x86_64
qpid-proton-c-0.32.0-2.el6.x86_64
Distribution and version:
Centos 7 latest
Other relevant data:
goferd process goes into a Timeout loop and leaks memory rendering the underlying system useless after 4-5 hrs. it consumes initally all RAM and then fills out all swap space.
[root@client1 ~]# pstree -a -h -p 20435
python,20435 /usr/bin/goferd
├─{python},20440
├─{python},20441
├─{python},20442
├─{python},20443
├─{python},20444
├─{python},20445
├─{python},20446
└─{python},20447
[root@client1 ~]# strace -p 20441
Process 20441 attached
select(0, NULL, NULL, NULL, {0, 42106}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 25308}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 1000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 2000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 4000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 8000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 16000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 32000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
[root@client1 ~]# tail -f /var/log/messages
Mar 8 11:23:43 client1 goferd: [INFO][pulp.agent.f410fbc3-aac6-4384-98b7-49f18b4d823d] gofer.messaging.adapter.proton.connection:92 - opened: proton+amqps://foreman.example.com:5647
Mar 8 11:23:43 client1 goferd: [INFO][pulp.agent.f410fbc3-aac6-4384-98b7-49f18b4d823d] gofer.messaging.adapter.connect:30 - connected: proton+amqps://foreman.example.com:5647
Mar 8 11:24:01 client1 goferd: [WARNING][pulp.agent.f410fbc3-aac6-4384-98b7-49f18b4d823d] gofer.messaging.adapter.proton.reliability:53 - Connection amqps://foreman.example.com:5647 disconnected: Condition('amqp:resource-limit-exceeded', 'local-idle-timeout expired')
...