Hi.

I faced a problem with mod call centre strange behaviour. I have a queue with the strategy "ring all", queue has got 30 agents, all of them always have status available, but only 6 agents can be really active (e.g.: registered and connected) at a time.

Those 6 simultaneously answer calls (e.g. can answer 200 on the same INVITE request before CANCEL arrives). Sometimes an agent might get stuck in the state "In a queue call" while he is not in a call. In that case waiting agent stops getting calls.

CLI command:

> callcenter_config agent set state <agent> waiting

changes state of an agent at DB, but call center still won't offer calls to him. The only fix I found is to reload mod_callcenter, but during reload all active calls would be dropped.

Calls are coming one by one (maximum call rate I had ever seen at this site was ~600 calls/hour). But I didn't notice any correlation with the call rate. Agent may get stuck at any time of day with any call rate ranging between ~150 calls/hour to 400 calls/hour.

Most of calls last from 5 to 20 seconds.

I tried to switch from sqlite to odbc postgresql, but that changed nothing. Currently switch is connected to ODBC Postgresql.

OS version:
Linux local.pbx 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64 GNU/Linux

FS version:
FreeSWITCH version: 1.6.6+git~20160111T201612Z~d2d0b3283a~64bit (git d2d0b32 2016-01-11 20:16:12Z 64bit)

sqlite package:
llibsqlite3-0:amd64             3.8.7.1-1+deb8u1             amd64        SQLite 3 shared library

PostgreSQL / ODBC packages:
odbc-postgresql:amd64          1:09.03.0300-1               amd64        ODBC driver for PostgreSQL
postgresql-9.4                 9.4.6-0+deb8u1               amd64        object-relational SQL database, version 9.4 server


XML configs:

callcenter/queues/queue.xml:
<queue name="dispatchers">
  <param name="discard-abandoned-after" value="300"/>
  <param name="max-wait-time" value="0"/>
  <param name="max-wait-time-with-no-agent" value="120"/>
  <param name="moh-sound" value="$${hold_music}"/>
  <param name="strategy" value="ring-all"/>
  <param name="tier-rule-no-agent-no-wait" value="false"/>
  <param name="tier-rule-wait-multiply-level" value="true"/>
  <param name="tier-rule-wait-second" value="300"/>
  <param name="tier-rules-apply" value="false"/>
  <param name="time-base-score" value="queue"/>
</queue>

callcenter/agents/agent.xml
    <agent name="agent@local" type="callback" contact="user/agent@local"
           status="Available" max-no-answer="0" wrap-up-time="1" reject-delay-time="1" busy-delay-time="1"
           no-answer-delay-time="1"/>

that's a typical agent. They are all same except name and contact attributes.

callcenter/tiers/tier.xml
<tier agent="agent@local" queue="dispatchers" level="1" position="1"/>