Skip to content

[bug]: js-controller >7.x -> shutdown very slow with redis #3066

Open
@Scrounger

Description

@Scrounger

No existing issues.

  • There is no existing issue for my problem.

Description

After updating the controller from 6.x to 7.0.6 my proxmox lxc ubuntu 24.04. container needs approx. 4-5min for the shutdown.

After deeper analysis, the systemd logs during shutdown show that the iobroker is shutdown after the redis-server(s) and then killed due to timeout

May 26 20:02:01 ioBroker systemd[1]: Stopped target network-online.target - Network is Online.
May 26 20:02:01 ioBroker systemd[1]: redis-states.service: Deactivated successfully.
May 26 20:02:01 ioBroker systemd[1]: Stopped redis-states.service - Advanced key-value store.
May 26 20:02:01 ioBroker systemd[1]: redis-objects.service: Deactivated successfully.
May 26 20:02:01 ioBroker systemd[1]: Stopped redis-objects.service - Advanced key-value store.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: State 'stop-sigterm' timed out. Killing.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 130 (iobroker.js-con) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 147 (node) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 156 (node) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 158 (node) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 159 (node) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 160 (node) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Killing process 161 (node) with signal SIGKILL.
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Main process exited, code=killed, status=9/KILL
May 26 20:03:31 ioBroker systemd[1]: iobroker.service: Failed with result 'timeout'.
May 26 20:03:31 ioBroker systemd[1]: Stopped iobroker.service - ioBroker Server.

In addition, the iobroker log is flooded with the following messages

2025-05-26 20:02:01.085 - error: host.ioBroker States database error: connect ECONNREFUSED 127.0.0.1:6380
2025-05-26 20:02:01.373 - error: host.ioBroker Objects database error: connect ECONNREFUSED 127.0.0.1:6379
2025-05-26 20:02:01.086 - error: host.ioBroker States database error: connect ECONNREFUSED 127.0.0.1:6380
2025-05-26 20:02:01.374 - error: host.ioBroker Objects database error: connect ECONNREFUSED 127.0.0.1:6379

By chance I stumbled across the timeout setting
Image

after reducing the timeout to
Image

the shutdown works correctly again. And iobroker is terminated before redis, as it should be according to the iobroker.service definition. Systemd logs show that iobroker stopped before redis:

May 26 20:18:41 ioBroker bash[150]: ================================== > LOG REDIRECT system.adapter.admin.0 => false [Process stopped]
May 26 20:18:41 ioBroker bash[150]: ================================== > LOG REDIRECT system.adapter.admin.0 => false [system.adapter.admin.0.logging]
May 26 20:18:42 ioBroker systemd[1]: iobroker.service: Main process exited, code=exited, status=1/FAILURE
May 26 20:18:42 ioBroker systemd[1]: iobroker.service: Failed with result 'exit-code'.
May 26 20:18:42 ioBroker systemd[1]: Stopped iobroker.service - ioBroker Server.
May 26 20:18:42 ioBroker systemd[1]: iobroker.service: Consumed 4.515s CPU time.
May 26 20:18:42 ioBroker systemd[1]: Stopping redis-objects.service - Advanced key-value store...
May 26 20:18:42 ioBroker systemd[1]: Stopping redis-states.service - Advanced key-value store...
May 26 20:18:42 ioBroker systemd[1]: redis-states.service: Deactivated successfully.
May 26 20:18:42 ioBroker systemd[1]: Stopped redis-states.service - Advanced key-value store.
May 26 20:18:42 ioBroker systemd[1]: redis-objects.service: Deactivated successfully.
May 26 20:18:42 ioBroker systemd[1]: Stopped redis-objects.service - Advanced key-value store.

I also tested this with a complete new installed proxmox lxc debian 12 -> exactly same behaviour.

Do you think that the timeout setting for the shutdown command (SIGTERM) should not take effect?

Reproduction instruction

No response

JS-controller version

7.0.6

Node version

20.19.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions