forum.bitel.ru
http://forum.bitel.ru/

[7.0] onAccountingStart : newserv.getChildren() is null
http://forum.bitel.ru/viewtopic.php?f=44&t=13225
Страница 1 из 1

Автор:  Cromeshnic [ 06 фев 2019, 11:04 ]
Заголовок сообщения:  [7.0] onAccountingStart : newserv.getChildren() is null

Сервер: вер. 7.0.1404 / 07.08.2018 19:50:33
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_144
inet: вер. 7.0.928 / 07.08.2018 19:50:48

Есть давно написанный собственный ServiceActivator.
В нём на события serviceCreate/serviceModify/serviceCancel и т.д. выполняются некие действия - всё отлично работает
Недавно добавил те же действия на OnAccountingStart и стал получать NPE при попытке перебрать все дочерние сервисы сервиса.

Т.е. в onAccountingStart(ServiceActivatorEvent e):

e.getNewInetServ().getChildren() == null

Хотя в serviceModify, например, это не так.
При этом дочерние сервисы в реальности есть. Но даже когда их нет, там не null, а пустой список.

Можете их тоже прописать для onAccountingStart()?

Сейчас пока видимо придётся самому заполнять из InetServRuntimeMap.listChildren

Автор:  Amir [ 06 фев 2019, 13:25 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

Выложим обновление на этой неделе.

Автор:  Cromeshnic [ 07 фев 2019, 07:37 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

Спасибо!

Бтв, стал сам получать список из кэша, а он иногда получается пустой, хотя в базе есть дочерние:

Код:
children = Utils.maskNull(this.access.inetServRuntimeMap.listChildren(serv.getId())).stream().map(InetServRuntime::getInetServ).collect(Collectors.toList())


Придётся пока из базы дёргать видимо.

Автор:  Amir [ 07 фев 2019, 15:04 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

Возникает для только что добавленных сервисов?

Автор:  Cromeshnic [ 08 фев 2019, 08:34 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

Amir писал(а):
Возникает для только что добавленных сервисов?

Нет, все - на приостановленных и закрытых договорах (статусы 1,3,4).
Речь про childrenRuntimes is null.

(пишу в дебаге в логи, собрал статистику за полчаса)

Автор:  Amir [ 08 фев 2019, 14:25 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

У них deviceId совпадает с deviceId родительского сервиса?

Автор:  Amir [ 08 фев 2019, 14:48 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

По коду вроде бы единственная ситауция, когда не будет грузить в childrenRuntimes - если deviceId 0 или такого deviceId нет в поддереве.
Сам биллинг при добавлении дочернего сервиса проставляет ему deviceId от родительского.

Автор:  Cromeshnic [ 08 фев 2019, 15:38 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

Да, deviceId от другого устройства был почему-то. Пересохранил - исправилось.
На том же договоре есть закрытый сервис на другом устройстве с таким же дочерним.
Т.е. клиента в какой-то момент перенесли с одного устройство на другое: на родительском девайс поменялся, а на дочернем - нет.
Щас некогда смотреть, как это делалось (руками/скриптом), потом может гляну.

Автор:  Amir [ 11 фев 2019, 17:04 ]
Заголовок сообщения:  Re: [7.0] onAccountingStart : newserv.getChildren() is null

Да, при смене устройства на сервисе у дочерних сервисов devceId оставался старый. Выложим исправление сегодня-завтра

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/