Mod_callcenter with a centralized mariadb database

Hi,
I use mod_callcenter in order to build a CallQueue application. It is working well with one instance of freeswitch. But now I want to test with several instance if fresswitch and with one unique database. To do that I use the mariadb module on each fresswitch inatnce in order to connect to one unique mariadb database. This work well, but not for mod_callcenter, when incomming calls are received by the fresswitch instances some calls are lost in the queue and not offering to an agent. When I read the code of the modue they are a database table named “members”. All calls to queues are stored in this tables. A thread pool this table and dispatch calls to agants.
But: When a freeswitch instance reads the members table and hits a queue that is not handled by it (but handled by another freeswitch instance), this freeswitch instance clears the row from the members table and the call is lost. Is there a reason about this behaviour? Because in the case of sevrale fresswitch instances and one unique database mod callcenter does not works.
In other word can we change the members table in order that this tables could be handled by more that one freeswitch instance when the database is common between all fresswitch instances?
Regards
Eric Peiffer

The structure of mod_callcenter is for one freeswitch only, so you will have add another column for the FS instance to the database tables.
You may use a MySQL proxy for modifying requests to the database. Means, very time you send or read data, you are modifying requests and result for a specific Freeswitch instance.
I used EM-proxy some time time ago for this. See

What is the use of the database field “instance_id” present in the members table and in the agents table?
Could we setup de value of these fields by the vallue of the global variable ‘cc_instance_id’, that we can configure in the callcanter.conf.xml?
Regards,
Eric

mod_callcenter resets the state of Agents on restart. If used with centralized db, this needs to changed in the code as well. In the event freeswitch crashes or the module is stuck, during restart it will reset the agents’ state, meaning it will be reset for all FS looking at the same table.