BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 апр 2024, 06:00

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: [feature request] Метод destroy для ProtocolHandler
СообщениеДобавлено: 15 окт 2013, 15:03 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
В своём ProtocolHandler-е мне нужно следить за изменениями портов устройств, чтобы обновлять внутренний кэш, для чего я подписываюсь на событие RadiusProtocolHandler:

Код:
public class ISGIPoEProtocolHandler extends ISGProtocolHandler implements RadiusProtocolHandler {
    ...
    private class DeviceNasPortMap implements EventListener<DeviceInterfaceModifiedEvent> {

        public DeviceNasPortMap(int moduleId, int deviceId, SortedMap<Integer, ParameterMap> patternMap) throws BGException {
            ...
            EventProcessor.getInstance().addListener(this, DeviceInterfaceModifiedEvent.class);
            ...
        }
    ...
    }
}


Но возникает неочевидная проблема - при каждом перечитывании конфигурации (или возможно при перекомпилировании дин кода и перечитывании) предыдущий экземпляр ISGIPoEProtocolHandler.DeviceNasPortMap остаётся в памяти и в подписчиках события.

Как можно этого избежать?


Последний раз редактировалось Cromeshnic 17 окт 2013, 08:20, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ProtocolHandler и подписка на события
СообщениеДобавлено: 16 окт 2013, 07:17 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Я думаю, в ServiceActivator и ProtocolHandler неплохо бы добавить абстрактные методы destroy() для таких вещей. Вызывать их перед перезагрузкой устройства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ProtocolHandler и подписка на события
СообщениеДобавлено: 17 окт 2013, 08:18 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
У ServiceActivator есть init() и destroy()
У ProtocolHandler - только init()

Незадача.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 дек 2013, 13:57 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
up?
todo?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 10:18 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
up?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 фев 2015, 11:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
прошёл год...

Сейчас пилю схему с авторизацией по номеру сотового, который приходит в Calling-Station-Id для схемы с L2TP из сети 3G оператора-партнёра.
Мне опять же в хэндлере нужно держать кэш соответствия Title -> id интерфейса, который обновляется по системному событию изменения интерфейса. В результатепри обновлении конфига устройств старый экземпляр хэндлера остаётся подписан на событие и не уничтожается сборщиком мусора.

(Номер сотового = title интерфейса, номеров конечный пул у компании, выдаём клиентам 3G модемы уже настроенные на время аварии и т.п., в биллинге заводится сервис, привязанный к соответствующему интерфейсу)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 фев 2015, 12:19 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
В TODO уже есть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 фев 2015, 12:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Ok, спасибо


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2015, 14:50 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
У меня после нескольких перечитываний конфигурации начинают ругаться Access/Accounting-сервера.
Я грешу на эту фичу, но проверять пока лень (снимать дамп, ковыряться) - просто рестартую их.

Как там ваше TODO поживает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 апр 2015, 22:39 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Выкладывается обновление. Нужно добавить implements ru.bitel.common.worker.Destroyable


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 апр 2015, 07:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
С 5.2? 6.0 ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 апр 2015, 22:17 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Сейчас с 6.0.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2017, 12:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Обновился на 7.0, реализовал метод - всё работает, спасибо.
Надо бы мне ещё статью на вики поправить..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2017, 12:48 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
...поправил:

http://wiki.bitel.ru/index.php/Vlan_per ... colHandler


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.129s | 46 Queries | GZIP : On ]