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

[BUG] Диапазоны трафика и параллельность тарификации (CRM)
http://forum.bitel.ru/viewtopic.php?f=10&t=12130
Страница 1 из 1

Автор:  Cromeshnic [ 25 ноя 2016, 14:14 ]
Заголовок сообщения:  [BUG] Диапазоны трафика и параллельность тарификации

Сервер: вер. 5.2 сборка 1645 от 16.08.2016 17:11:56
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26
phone вер. 5.2 сборка 286 от 25.05.2016 12:23:30

Привет.

Начали использовать пакеты трафика через узел "диапазон трафика".
Стал замечать, что при переобсчёте задним числом на тех же данных стали сползать начисления.
Например, в пакет минут входят местные и мобильные (устанавливаем зону "Пакет"), а сверх пакета местные - бесплатно, а мобильные - платно.
В итоге тарификация получается недетерминированной.
Посмотрел по коду - думаю, проблема в том, что тарификацию выполняют 2 параллельных процесса FindItemConveyor:

Код:

      Conveyor.process("data-process-log", new TariffConveyor(this.setup, this, con),
        Arrays.asList(new FindItemConveyor[] {
        new FindItemConveyor(this.setup, this, processIn, rangeMapCache), new FindItemConveyor(this.setup, this, processIn, rangeMapCache) }));

...

 public static <T, C> void process(String name, Conveyor<T, ? extends ConveyorContext<T>, ? extends ThreadContext> conveyor, List<? extends Callable<C>> tasks)
    throws InterruptedException, ExecutionException
  {
    ExecutorService executorService = WorkerTask.newFixedThreadPool(name, null, conveyor, tasks.size());
    List futures = executorService.invokeAll(tasks);

    ConcurrentUtils.awaitFutures(futures);

    executorService.shutdown();
    executorService.awaitTermination(1L, TimeUnit.DAYS);

    conveyor.sync.acquire();

    conveyor.shutdown();

    for (Future future : futures)
    {
      future.get();
    }
  }


А внутри FindItemConveyor они по-очереди берут по 20 CDR для обработки.
Опыты не проводил, но логически скорее всего проблема именно тут.
Т.е. для одного и того же договора видимо данные тарифицируются в разное время в разной последовательности.

Автор:  Cromeshnic [ 01 дек 2016, 12:46 ]
Заголовок сообщения:  Re: [BUG] Диапазоны трафика и параллельность тарификации

up?

Автор:  stark [ 26 дек 2016, 13:09 ]
Заголовок сообщения:  Re: [BUG] Диапазоны трафика и параллельность тарификации

Cromeshnic писал(а):
Т.е. для одного и того же договора видимо данные тарифицируются в разное время в разной последовательности.


:facepalm: Я давно заметил этот косяк, и постарался в voice его исправить. Но пока всем в Phone везло и никто не наперерся.
Подумаем что можно сделать.

Автор:  stark [ 26 янв 2017, 19:02 ]
Заголовок сообщения:  Re: [BUG] Диапазоны трафика и параллельность тарификации (CR

Создайте тему в helpdesk . Не все может быть однозначно.У нас порядок в cdr скорее всего идет по sessionStop. И соответственно в там же самом порядке мы и считаем(но мы можем его нарушить да, но не факт что нарушили). Если кто-то позвонил и говорит пол часа, в это время могут завершится куча сессий по минуте и порядок нарушиться, они в файле будут идти раньше чем эта сессия на пол часа. Хотя если это между разными абонентами, то порядок нам не важен. А вот если внутри одного вполне может нарушить порядок. Вы точно уверены что сессии там не перепутаны из-за длительности: более короткие, которые идут позже, могут тарифицироваться раньше. Т.е даже если мы пофиксим порядок, он все равно идет не по старту сессии, а по стопу, и, возможно, это не поможет.

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