Amir! Биллинг вызывает дважды обработчик Код:
protected void setAgentOptions( RadiusPacket request )
при приходе пакета авторизации!!!как я это вычислил. Я навтыкал в обработчик массу logger.info( "текст сообщения" ); и смотрю что происходит.
В 11:33:53 пришел пакет авторизации, скрипт начал его обрабатывать. Алгоритм проверил, что есть устройство, но на данном устройстве нет порта, на котором клиент собирается авторизоваться.
Алгоритм создает порт и устанавливает:
Код:
request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, deviceIdString); //Поиск агента по серийному номеру
request.setOption( InetRadiusProcessor.INTERFACE_ID, devicePort ); //Поиск по порту
Где
Код:
deviceIdString = "AUTOCREATE"; //Авторизуемся на специальном договоре с сервисом в статусе Отключено, что бы получить Reject и
devicePort = 1; // заставить устройство еще раз выслать пакет авторизации
В этот момент ветка алгоритма, где создается договор не отрабатывает. Через 2-3 секунды должен прийти снова запрос на авторизацию. Тогда устройство и порт будут уже существовать. Алгоритм создает договор и авторизует на нем клиента.
Внимание!!! В 11:33:53 в логах MQ я вижу:
Код:
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntimeMap - (Re)loading InetDeviceRuntimeMap
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload protocolHandler class for device: RootType: Root
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload SA classes for device: RootType: Root
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload protocolHandler class for device: Redback: RedBack [172.16.98.7]
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload SA classes for device: Redback: RedBack [172.16.98.7]
08-19/11:33:53 WARN [event-proc-p-2-t-1] RadiusDictionary - Radius attribute Deactivate-Service-Name:1 not found in dictionary!
....
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload protocolHandler class for device: QTech GPON: 13090004
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntime - Reload SA classes for device: QTech GPON: 13090004
08-19/11:33:53 WARN [event-proc-p-2-t-1] RadiusDictionary - Radius attribute Deactivate-Service-Name:1 not found in dictionary!
....
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDeviceRuntimeMap - Load inetDeviceRuntimeMap complete. Loaded 27 inetDevices.
08-19/11:33:53 INFO [AccessReload-1] Access - childrenDeviceIds=[68, 1, 32, 2, 33, 38, 67, 76, 12, 75, 85, 17, 16, 84, 19, 18, 86, 20, 23, 22, 25, 24, 27, 29, 28, 31, 30]
08-19/11:33:53 INFO [AccessReload-1] InetConnectionManager - Loading connections from database.
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDhcpDeviceMap - Load DHCP relay list, types: [2].
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetDhcpDeviceMap - Loaded device: 2
08-19/11:33:53 INFO [pool-5-thread-1] InetDhcpDeviceMap - Bind device: 2; 172.16.98.7
08-19/11:33:53 INFO [event-proc-p-2-t-1] ContractRuntimeMap - Taked event: Event[ru.bitel.bgbilling.kernel.event.events.ContractStatusModifiedEvent] moduleId: 0; pluginId: no; cid: 90923; scid: -1; userId: 0; timestamp: 1408433633752
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.kernel.event.events.ContractStatusModifiedEvent] moduleId: 0; pluginId: no; cid: 90923; scid: -1; userId: 0; timestamp: 1408433633752
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.api.server.event.InetServModifiedEvent] moduleId: 1; pluginId: no; cid: 90923; scid: -1; userId: -1; timestamp: 1408433633804
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Adding new InetServRuntime: 216
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Loading inetServ from database.
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Adding InetServRuntime: 216
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - ContractId: 90923; status: 0; servId: 216
1:13090004
Options [] TariffModuleTreeSet [10:19.08.2014-…; ]
Device state: -1; optionSet:
08-19/11:33:54 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.access.event.InetServDeviceStateAndOptionsModifiedEvent] moduleId: 1; pluginId: no; cid: global; scid: -1; userId: -1; deviceId: 85; inetServId: 216; state: 1; optionSet: ; timestamp: 1408433634128
08-19/11:33:55 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.api.server.event.InetAccountingPeriodModifiedEvent] moduleId: 1; pluginId: no; cid: 90923; scid: -1; userId: 0; timestamp: 1408433635405
08-19/11:33:57 INFO [event-proc-p-2-t-1] InetConnectionManager - Add connection: InetConnection [id=45643-0, iface=2:50528256, sessId=0202FFFF78001818-53F2FD45, start=19.08.2014 11:33:57, uname=0006001fce109dc5:000e0064000701515445431309000401, addr=185.23.81.2]
То есть в 11:33:53 совершенно логично вызвался обработчик для обработки пакета авторизации, в котором я создал порт. И каким то чудом, сразу же еще раз повторно вызвался обработчик setAgentOptions! Поскольку устройство и порт уже есть, то стала отрабатываться ветка создания договора на устройстве 13090004!!!
Вот строчка
08-19/11:33:53 INFO [event-proc-p-2-t-1] InetServRuntimeMap - ContractId: 90923; status: 0; servId: 216 1:13090004cid=90923 это как раз этот договор, servId=216 это сервис на этом договоре!
Причем в логах Access radius.log нет никаких сообщений от этого повторного запуска!!! На первый запуск при приходе пакета есть записи лога, а при повторном нет. Но запуск есть!!! Договор создается!
Это я к тому написал, что регулярно у меня появляются "фантомные договора" которые создаются в функции setAgentOptions, которая вызывается биллингов БЕЗ ПРИХОДА ПАКЕТА АВТОРИЗАЦИИ!!!
я завтра уезжаю в отпуск на неделю. Буду на работе 28 августа. Готов заплатить из личных средств за разрешение данной проблемы (но что бы директор не знал

)