From 2b9aa6b5bbe8d3ada6e4a9b0bc614f2f77470cd0 Mon Sep 17 00:00:00 2001 From: George Joseph Date: Sun, 28 Jan 2018 09:10:00 -0700 Subject: res_pjsip_pubsub: Prune subs with reliable transports at startup In an earlier release, inbound registrations on a reliable transport were pruned on Asterisk restart since the TCP connection would have been torn down and become unusable when Asterisk stopped. This same process is now also applied to inbound subscriptions. Also fixed issues in res_pjsip_registrar where it wasn't handling the monitoring correctly when multiple registrations came in over the same transport. To accomplish this, the pjsip_transport_event feature needed to be refactored to allow multiple monitors (multiple subcriptions or registrations from the same endpoint) to exist on the same transport. Since this changed the API, any external modules that may have used the transport monitor feature (highly unlikey) will need to be changed. ASTERISK-27612 Reported by: Ross Beer Change-Id: Iee87cf4eb9b7b2b93d5739a72af52d6ca8fbbe36 --- ...4f8707_add_prune_on_boot_to_ps_subscription_.py | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 contrib/ast-db-manage/config/versions/d3e4284f8707_add_prune_on_boot_to_ps_subscription_.py (limited to 'contrib') diff --git a/contrib/ast-db-manage/config/versions/d3e4284f8707_add_prune_on_boot_to_ps_subscription_.py b/contrib/ast-db-manage/config/versions/d3e4284f8707_add_prune_on_boot_to_ps_subscription_.py new file mode 100644 index 000000000..aa780bef3 --- /dev/null +++ b/contrib/ast-db-manage/config/versions/d3e4284f8707_add_prune_on_boot_to_ps_subscription_.py @@ -0,0 +1,33 @@ +"""add prune_on_boot to ps_subscription_persistence + +Revision ID: d3e4284f8707 +Revises: 52798ad97bdf +Create Date: 2018-01-28 17:45:36.218123 + +""" + +# revision identifiers, used by Alembic. +revision = 'd3e4284f8707' +down_revision = '52798ad97bdf' + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects.postgresql import ENUM + +YESNO_NAME = 'yesno_values' +YESNO_VALUES = ['yes', 'no'] + + +def upgrade(): + ############################# Enums ############################## + + # yesno_values have already been created, so use postgres enum object + # type to get around "already created" issue - works okay with mysql + yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False) + + op.add_column('ps_subscription_persistence', sa.Column('prune_on_boot', yesno_values)) + +def downgrade(): + if op.get_context().bind.dialect.name == 'mssql': + op.drop_constraint('ck_ps_subscription_persistence_prune_on_boot_yesno_values','ps_subscription_persistence') + op.drop_column('ps_subscription_persistence', 'prune_on_boot') -- cgit v1.2.3