Skip to content

rabbitmq:rpc-server lacks --memory-limit and graceful signal handling #746

Description

@qwant50

An RPC server is a long-running consumer process like any other, but rabbitmq:rpc-server is missing the process-lifecycle controls that rabbitmq:consumer and rabbitmq:multiple-consumer have:

  • no --memory-limit option — servers with slow memory leaks eventually crash with an allowed-memory-size error instead of exiting gracefully so a supervisor can restart them (previously reported in Add --memory-limit to rabbitmq:rpc-server #712 and Memory leak or something else ? #545, both closed by the stale bot);
  • no signal handling — SIGTERM/SIGINT kill the process mid-message instead of finishing the current reply first (problematic under supervisord/systemd/Kubernetes);
  • no graceful_max_execution / idle_timeout support in the rpc_servers config section.

In #712 a maintainer said a PR would be welcome, and #524 implemented this approach but was also closed by the stale bot before review.

I have a PR ready that re-implements #524 on current master, fixes several defects it had, and adds tests. Submitting it right after this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions