[OpenSIPS-Devel] [OpenSIPS/opensips] 62ce85: enable rabbitmq heartbeat to solve processes hang ...

Răzvan Crainea razvan at opensips.org
Fri Nov 1 16:19:35 CET 2013


  Branch: refs/heads/master
  Home:   https://github.com/OpenSIPS/opensips
  Commit: 62ce85fc187c5d962aab436d3f9eb033ef6be953
      https://github.com/OpenSIPS/opensips/commit/62ce85fc187c5d962aab436d3f9eb033ef6be953
  Author: franklyfox <franklyfox at outlook.com>
  Date:   2013-10-01 (Tue, 01 Oct 2013)

  Changed paths:
    M modules/event_rabbitmq/event_rabbitmq.c
    M modules/event_rabbitmq/event_rabbitmq.h
    M modules/event_rabbitmq/rabbitmq_send.c
    M modules/event_rabbitmq/rabbitmq_send.h

  Log Message:
  -----------
  enable rabbitmq heartbeat to solve processes hang by amqp socket


  Commit: 8c216598b192335501d8462ab1dada2e22b4d5ae
      https://github.com/OpenSIPS/opensips/commit/8c216598b192335501d8462ab1dada2e22b4d5ae
  Author: franklyfox <franklyfox at outlook.com>
  Date:   2013-10-04 (Fri, 04 Oct 2013)

  Changed paths:
    M modules/event_rabbitmq/event_rabbitmq.c

  Log Message:
  -----------
  enable rabbitmq heartbeat to solve issues of hanging SIP processing because of a broken amqp socket

This implementation enabled the rabbitmq's client side's heartbeat negotiation.

Issue:
Because of TCP's nature, it takes very long time for a TCP peer to make the decision of closing a local socket when the connection actually is broken. The event_rabbitmq module didn't handle the situation which causes the Opensips1.9 stop processing UDP packets until the O.S decides to close the local socket. One of the consequence is that UAC cannot register to the registrar during this time period.

Issue Reproduce:
1. Block an existing amqp connection from the rabbitmq-server that event_rabbitmq module connects to.
2. From the event_rabbitmq side, the UDP receive-buffer that Opensips uses should be full.

Solution:
If the module, even_rabbitmq/rabbitmq-client, doesn't get a heartbeat message from the rabbitmq-server within X seconds, the rabbitmq-client will kill the local socket connection actively.

Added a modparam:

modparam("event_rabbitmq", "heartbeat", [X seconds]


  Commit: a6090ec150cb5ce8f16e4def9302b6987b2cd522
      https://github.com/OpenSIPS/opensips/commit/a6090ec150cb5ce8f16e4def9302b6987b2cd522
  Author: Răzvan Crainea <razvan at opensips.org>
  Date:   2013-11-01 (Fri, 01 Nov 2013)

  Changed paths:
    M modules/event_rabbitmq/event_rabbitmq.c
    M modules/event_rabbitmq/event_rabbitmq.h
    M modules/event_rabbitmq/rabbitmq_send.c
    M modules/event_rabbitmq/rabbitmq_send.h

  Log Message:
  -----------
  Merge pull request #100 from franklyfox/1.9_rabbitmq_heartbeat

enable rabbitmq heartbeat to solve issues of hanging SIP processing because of a broken amqp socket


Compare: https://github.com/OpenSIPS/opensips/compare/34df519c373a...a6090ec150cb


More information about the Devel mailing list