BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 18 июн 2025, 15:10

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




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 03 авг 2016, 19:15 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Добрый день!

Пытаюсь скрестить bgb с Mikrotik. Вроде все уже тысячи раз проделывал, но как всегда грабли поджидают в неожиданном месте. Итак:
1) Wiki про скрещивание с Mikrotik прочитал
2) Пока балуюсь, пытаясь понять как работает активатор. Создал тип устройства с нужным SA, создал устройство. Прописал логин и пароль. Создал сервис. В конфигурации устройства прописал две простые команды:
Цитата:
sa.command.serv.enable=/queue/simple/add\n=name=test\n=target=1.1.1.1/32
sa.command.serv.disable=/queue/simple/remove\n=numbers=test


Все, больше ничего не прописывал. Теперь тупо "открыт/закрыт" сервис. Так вот - почему-то выполняется только первая команда. То есть:
Перевел сервис в "закрыт" - сервис состояние поменял и в логе видно, что команда выполнилась и ответ !done получен.
Теперь делаем "открыт" - и ничего не происходит. Сервис состояние не меняет, в логах тоже тишина. Перезапускаем access - и опа, наша команда выполнилась и сервис состояние поменял.

Помогите люди добрые? уже всю голову сломал что за глюк такой.

Цитата:
Информация о версии:

Клиент: вер. 6.2.834 / 02.08.2016 15:13:52
os: Windows XP; java: Java HotSpot(TM) Client VM, v.1.8.0_101
Сервер: вер. 6.2.1103 / 03.08.2016 14:58:59
os: FreeBSD; java: OpenJDK 64-Bit Server VM, v.1.8.0_92
ВНИМАНИЕ: Виртуальная машина OpenJDK 64-Bit Server VM не рекомендуется

bill: вер. 6.2.87 / 10.06.2016 13:28:18
card: вер. 6.2.39 / 26.05.2016 14:50:45
dialup: вер. 6.2.315 / 01.03.2016 00:17:59
email: вер. 6.2.176 / 01.03.2016 00:18:32
inet: вер. 6.2.679 / 03.08.2016 14:59:10
ipn: вер. 6.2.259 / 06.07.2016 19:29:33
mps: вер. 6.2.214 / 14.07.2016 16:43:28
npay: вер. 6.2.196 / 20.07.2016 09:56:08
phone: вер. 6.2.279 / 06.06.2016 12:50:07
reports: вер. 6.2.210 / 02.08.2016 15:17:51
ru.bitel.bgbilling.plugins.documents: вер. 6.2.171 / 11.07.2016 17:46:28
ru.bitel.bgbilling.plugins.organizer: вер. 6.2.71 / 01.03.2016 00:18:34
voiceip: вер. 6.2.190 / 03.03.2016 18:32:27
wellpay: вер. ?

Окружение:

Клиент:
os: Windows XP x86, 5.1
java: Java HotSpot(TM) Client VM, v.1.8.0_101
jre home: C:\Program Files\Java\jre1.8.0_101
default tz: 03.08.2016 18:15 YEKT +0500 (Asia/Yekaterinburg)
user tz: 03.08.2016 18:15 UZT +0500 (Asia/Tashkent)
locale: ru_RU
Сервер:
os: FreeBSD amd64, 10.2-RELEASE-p9
java: OpenJDK 64-Bit Server VM, v.1.8.0_92
jre home: /usr/local/openjdk8/jre
default tz: 03.08.2016 18:15 YEKT +0500 (Asia/Yekaterinburg)
db time: master: 03.08.2016 18:15 YEKT
db charset: connection: utf8(utf8_unicode_ci), database: utf8(utf8_general_ci)
locale: ru_RU
uptime: Started: 03.08.2016 17:47:41 Uptime: 0 d 00:27:47



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 14:44 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
На просторах этих ваших интернетов столько срачей на предмет того, что работа МТ-шного API ведет себя по разному в зависимости от версии ROS и иногда бывает вообще не работоспособной, что проще забить на API и использовать telnet/SSH.
Что именно в API есть такого, что нельзя реализовать через telnet/SSH?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 15:44 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
хм, а у меня почему-то вот так уже не первый год работаетъ:
Код:
a.command.serv.create.1=/ip/firewall/address-list/add\n=address=$ip/29\n=list=ACCESS_LIST\n=comment=!!$servId!!\n=disabled=yes
sa.command.serv.create.2=/queue/simple/add\n=max-limit=0/100M\n=target=vlan$vlan\n=name=vlan$vlan\n=comment=vlan$vlan
sa.command.serv.enable=/ip/firewall/address-list/enable\n=numbers="!!$servId!!"
sa.command.serv.disable=/ip/firewall/address-list/disable\n=numbers="!!$servId!!"
sa.command.serv.cancel.1=/ip/firewall/address-list/remove\n=numbers="!!$servId!!"
sa.command.serv.cancel.2=/queue/simple/remove\n=numbers=vlan$vlan
sa.command.inetOption.1.enable=/queue/simple/set\n=max-limit=0/100M\n=numbers=vlan$vlan
sa.command.inetOption.1.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.26.enable=/queue/simple/set\n=max-limit=0/100M\n=numbers=vlan$vlan
sa.command.inetOption.26.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.3.enable=/queue/simple/set\n=max-limit=0/10M\n=numbers=vlan$vlan
sa.command.inetOption.3.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.4.enable=/queue/simple/set\n=max-limit=0/20M\n=numbers=vlan$vlan
sa.command.inetOption.4.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.7.enable=/queue/simple/set\n=max-limit=0/40M\n=numbers=vlan$vlan
sa.command.inetOption.7.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.16.enable=/queue/simple/set\n=max-limit=0/6M\n=numbers=vlan$vlan
sa.command.inetOption.16.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.17.enable=/queue/simple/set\n=max-limit=0/15M\n=numbers=vlan$vlan
sa.command.inetOption.17.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.22.enable=/queue/simple/set\n=max-limit=0/4M\n=numbers=vlan$vlan
sa.command.inetOption.22.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.6.enable=/queue/simple/set\n=max-limit=0/25M\n=numbers=vlan$vlan
sa.command.inetOption.6.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.8.enable=/queue/simple/set\n=max-limit=0/55M\n=numbers=vlan$vlan
sa.command.inetOption.8.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.11.enable=/queue/simple/set\n=max-limit=0/70M\n=numbers=vlan$vlan
sa.command.inetOption.11.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.24.enable=/queue/simple/set\n=max-limit=0/2M\n=numbers=vlan$vlan
sa.command.inetOption.24.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.27.enable=/queue/simple/set\n=max-limit=0/2M\n=numbers=vlan$vlan
sa.command.inetOption.27.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.28.enable=/queue/simple/set\n=max-limit=0/8M\n=numbers=vlan$vlan
sa.command.inetOption.28.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan


ЧЯДН ?

пысы :ROS 6.xxx

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 16:43 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Я верю что работает :) Я не понимаю почему у меня не работает :) И RoutersOS последняя 6.36


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 16:47 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
snark писал(а):
На просторах этих ваших интернетов столько срачей на предмет того, что работа МТ-шного API ведет себя по разному в зависимости от версии ROS и иногда бывает вообще не работоспособной, что проще забить на API и использовать telnet/SSH.
Что именно в API есть такого, что нельзя реализовать через telnet/SSH?


Все бы хорошо, но я взял с сайта mikrotik клиент python, в котором ввожу те же самые команды, что и в bgb - и все прекрасно отрабатывает без каких либо последствий.

Вот про API и telnet/ssh конечно полностью соглашусь, что все то же самое. Просто есть API, есть готовая обертка к нему, думал воспользоваться. И в этой вот обертке есть переменная prevIdList которая действительно полезна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 17:01 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
попробуйте для simple queue дописать comment=test

пысы: у меня BGB управляет 14 брасами на микротик по 256 юзеров на каждом. Раньше это делалось по telnet/ssh. Связка access+accounting крутилась на отделом сервере. Это были чёрные дни, не знал откуда ещё волосы на себе вырвать от отчаяния, пока Бител на добавил библиотеку api для микротика. Сразу перешёл на неё и неделю пил от счастья..

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Последний раз редактировалось ok-2004 04 авг 2016, 17:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 17:08 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
borisk писал(а):
Добрый день!

Все, больше ничего не прописывал. Теперь тупо "открыт/закрыт" сервис. Так вот - почему-то выполняется только первая команда. То есть:
Перевел сервис в "закрыт" - сервис состояние поменял и в логе видно, что команда выполнилась и ответ !done получен.
Теперь делаем "открыт" - и ничего не происходит. Сервис состояние не меняет, в логах тоже тишина. Перезапускаем access - и опа, наша команда выполнилась и сервис состояние поменял.

Помогите люди добрые? уже всю голову сломал что за глюк такой.


Если все так как вы описываете то это не проблема конкретных команд. Или у вас что-то повисает там.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 17:22 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
А почему именно там, а не в bgb? Ведь после рестарта access он выполняет предыдущую "зависшую" команду?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 17:46 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
borisk писал(а):
А почему именно там, а не в bgb? Ведь после рестарта access он выполняет предыдущую "зависшую" команду?


гадать не получится. надо логи смотреть. И как именно вы открываете/закрываете сервис ? Правой кнопкой в подменю "отладка" ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 18:00 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Нет, захожу на сервис и "открыт/закрыт" делаю. Я бы рад смотреть логи, только их нет практически :)
Вот что удалось нарыть... вставил свои куски кода в MikrotikServiceActivator, так вот... все работает до тех пор, пока вот сюда
protected Object executeCommands( ServiceActivatorEvent e, InetServ serv, InetConnection connection, Set<Integer> options, String[] commands )
throws Exception
{
if( commands == null )
{
logger.error("MktSA: no commands");
return null;
}

не приходит commands == null. Как только оно приходит, вся дальнейшая работа прекращается. Соответственно вопрос, что же за такие commands == null приходят и от куда?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 18:06 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
И еще, если смотреть по логам микротик, то нормальная работа выглядит так:
user bgbill logged in via api
user.... changed ....
user bgbill logged out

а при глюке сточки logged out не появляется


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 18:18 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Нужен лог.
Т.е. перезапустить, открыть и закрыть - и сохранить лог.
Также желательно вывод jstack сохранить после того как откроете/закроете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 18:20 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Amir, в логе нет ничего вразумительного. Может опишите более подробно что именно включить и что снять (включая jstack), потому что мое знакомство я java весьма поверхностное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 18:28 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Перезапустите InetAccess, в log4j.xml включите DEBUG, откройте/закройте сервис.
Сохраните вывод /opt/java/jdk8/bin/jstack <кодпроцесса> > stack.txt

Отправьте нам all.log и stack.txt


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 04 авг 2016, 18:35 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Вот


Вложения:
bglog.tar [1.23 МБ]
Скачиваний: 243
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 08 авг 2016, 16:02 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
borisk писал(а):
Вот


В вашем логе я вижу событие и команды на выключение, но не вижу на включение.
Цитата:
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorSet - Connecting to device
connection 08-04/17:32:46 DEBUG [sa-p-13-t-79] AcknowledgeConsumer - Caught BGBillingServer:Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 0; newInetServOptionList: ; timestamp: 1470313966519
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Do task deviceId: 189; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 0; newInetServOptionList: ; timestamp: 1470313966519
connection 08-04/17:32:46 INFO [sa-p-13-t-79] InetApplication - TariffOptionMap: {}
connection 08-04/17:32:46 INFO [sa-p-13-t-79] InetApplication - OptionSet: [10]
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 1022; call: false; oldState: 1; newState: 0; oldOptionSet: 10; newOptionSet: 10
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Processing deviceId:189; command ServiceActivatorEvent type=2; inetServId: 1022; call: false; oldState: 1; newState: 0; oldOptionSet: 10; newOptionSet: 10
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorSet - Invoking serviceModify
connection 08-04/17:32:46 INFO [sa-p-13-t-79] AbstractTerminalServiceActivator - serviceModify
connection 08-04/17:32:46 INFO [sa-p-13-t-79] AbstractTerminalServiceActivator - serviceDisable
connection 08-04/17:32:46 INFO [sa-p-13-t-79] AbstractTerminalServiceActivator - switchOptions
connection 08-04/17:32:46 ERROR [sa-p-13-t-79] MikrotikServiceActivator - execute: /queue/simple/disable\n=numbers=test
connection 08-04/17:32:46 ERROR [sa-p-13-t-79] MikrotikServiceActivator - result=
!done
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Process event type[2] result=true
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Changing InetServ:1022 state and/or options


надо посмотреть почему сервер не шлет событие InetSaServModifyEvent на включение и нет ли каких-то проблем в activemq


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 08 авг 2016, 16:05 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
настройте сервер в режиме debug и посмотрите пишет ли он
Код:
Publish : InetSaServModifyEvent


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 08 авг 2016, 17:22 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Включение
Код:
08-08/16:16:26 DEBUG [http-bio-80.64.16.4-45443-exec-6] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.api.server.event.InetServModifiedEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: 2; timestamp: 1470654986842
08-08/16:16:26 DEBUG [http-bio-80.64.16.4-45443-exec-6] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 1; newInetServOptionList: ; timestamp: 1470654986846


Выключение
Код:
08-08/16:17:35 DEBUG [http-bio-80.64.16.4-45443-exec-1] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.api.server.event.InetServModifiedEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: 2; timestamp: 1470655055400
08-08/16:17:35 DEBUG [http-bio-80.64.16.4-45443-exec-1] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 0; newInetServOptionList: ; timestamp: 1470655055403


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 08 авг 2016, 17:23 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
То есть события публикуются => проблемы в mq? Но все остальные задачи работают и проблем не возникает. У меня самописный активатор сессий для freebsd работает на ура.
Опять таки не понимаю - после перезапуска ведь access откуда-то считывает событие?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 08 авг 2016, 17:44 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Вы посмотрите web-интерфейс activemq, не копятся ли там события .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 08 авг 2016, 22:26 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Во всех очередях "number of messages pending" - 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 09 авг 2016, 11:48 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
меня в вашем jstack смущает 2 потока :
Код:
"listener" #374 daemon prio=5 os_prio=15 tid=0x00000008848bc800 nid=0x18e89 runnable [0x00007fffd0907000]
   java.lang.Thread.State: RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
   at java.net.SocketInputStream.read(SocketInputStream.java:170)
   at java.net.SocketInputStream.read(SocketInputStream.java:141)
   at java.net.SocketInputStream.read(SocketInputStream.java:223)
   at java.io.FilterInputStream.read(FilterInputStream.java:83)
   at bitel.billing.server.util.mikrotik.ReadCommand.run(ReadCommand.java:54)
   at java.lang.Thread.run(Thread.java:745)


Код:
"sa-p-13-t-79" #136 prio=5 os_prio=15 tid=0x0000000879c97000 nid=0x18b1f waiting on condition [0x00007fffd8280000]
   java.lang.Thread.State: WAITING (parking)
   at sun.misc.Unsafe.park(Native Method)
   - parking to wait for  <0x00000008312a47a8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
   at bitel.billing.server.util.mikrotik.ApiConn.getData(ApiConn.java:151)
   at bitel.billing.server.util.mikrotik.MikrotikApiSession.readFromInput(MikrotikApiSession.java:117)
   at bitel.billing.server.util.mikrotik.MikrotikApiSession.doCommand(MikrotikApiSession.java:82)
   at ru.bitel.bgbilling.modules.inet.dyn.device.mikrotik.MikrotikServiceActivator.disconnect(MikrotikServiceActivator.java:59)
   at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.disconnect(ServiceActivatorSet.java:226)
   at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:259)
   at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:139)
   - locked <0x0000000813ce4718> (a ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer)
   at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152)
   - locked <0x0000000813ce4648> (a ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker)
   at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
   at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)
   at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46)


Если несколько раз подряд снять jstack с интервалом секунд в 30, то там что-то меняется ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 09 авг 2016, 11:51 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Лучше напишите в helpdesk и дайте доступ, возможно там что-то нестандартное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 10 авг 2016, 18:49 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 12 авг 2016, 13:00 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Да, спасибо, работает. А вот еще появился вопросик: используем схему с родительским сервисом (без ip, просто учет ресурсов), а к нему дочерние сервисы IP. И получается, MikrotikServiceActivator не умеет с таким работать, или я не нашел как?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 12 авг 2016, 13:20 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
borisk писал(а):
Да, спасибо, работает. А вот еще появился вопросик: используем схему с родительским сервисом (без ip, просто учет ресурсов), а к нему дочерние сервисы IP. И получается, MikrotikServiceActivator не умеет с таким работать, или я не нашел как?


Не умеет, как ssh и все остальные . Это по хорошему надо делать в базовом предке всех этих сервисов. Какая-то схема делалась отдельно в Manad для этого ( привет, skyb), но заброшена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 12 авг 2016, 13:27 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Хорошо, я попробую реализовать это как макрос в AbstractTerminalServiceActivator, потом представлю на ваш суд. Если понравится - добавите в следующие сборки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 15 авг 2016, 20:45 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Господа разработчики, проконсультируйте, пожалуйста. Пытаюсь сделать свой макрос с параметрами, по аналогии с deviceAttr
вызов моего макроса $ipChild(0)
код обработки:
Код:
         switch( args.length )
         {
            case 1:
               processRoot = ((Integer)args[0]) >= 1;

копия вашего из deviceAttr, но я получаю Exception в последней строке кода что
Цитата:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
. Макросы где-то надо еще регистрировать чтобы система понимала типы их параметров?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 15 авг 2016, 21:19 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
И еще какая-то странность. Делаю "закрыть сервис", все отрабатывает как надо, сервис закрывается и
Код:
connection 08-15/20:12:53 ERROR [sa-p-13-t-74] MikrotikServiceActivator - execute: /queue/simple/disable\n=numbers=391:1027
connection 08-15/20:12:53 ERROR [sa-p-13-t-74] MikrotikServiceActivator - result=
!done

Я ничего больше с договором не делаю, жду, и через секунд 30 в логе:
Код:
connection 08-15/20:13:17 ERROR [sa-p-13-t-65] MikrotikServiceActivator - execute: /queue/simple/enable\n=numbers=391:1027
connection 08-15/20:13:17 ERROR [sa-p-13-t-65] MikrotikServiceActivator - result=
!done


При этом сам сервис в биллинге в состоянии "закрыт/включен". Почему??? Куда копать?
Определены только вот эти команды:
Код:
sa.command.serv.create=/queue/simple/add\n=name=$contractId:$servId\n=target=$ipChild(0)
sa.command.serv.enable=/queue/simple/enable\n=numbers=$contractId:$servId
sa.command.serv.disable=/queue/simple/disable\n=numbers=$contractId:$servId
sa.command.serv.cancel=/queue/simple/remove\n=numbers=$contractId:$servId


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.2] MikrotikServiceActivator
СообщениеДобавлено: 16 авг 2016, 11:44 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Попробуйте вот так:
Код:
Integer.valueOf(args[0])


Либо, что более предпочтительно:

Код:
Utils.parseInt(args[0])


В последнем случае, если в аргументе будет не число, то вернется значение 0, а не NumberFormatException.
Также можно использовать перегруженный метод:
Utils.parseInt(args[0], <custom_default_value>)

где <custom_default_value> - число, которое будет возвращено, если не получится прочитать число из строки args[0]

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2  След.

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


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

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


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

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