[SR-Users] kamailio presence server using db_mongodb as database

José Seabra joseseabra4 at gmail.com
Tue Aug 18 13:17:39 CEST 2015


Hi,
Well i didn't noticed before, but after create a document in mongodb the
error that kamailio gives now is different but it still  related with table
version check.

Seems that kamailio can query the document successfully and get the
table_version field.

 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:671]:
db_mongodb_convert_result(): selected document: { "_id" : { "$oid" :
"55d2fc84b04c015195aee4b2" }, "table_version" : 4 }
 0(3068) DEBUG: <core> [db_row.c:117]: db_allocate_row(): allocate 32 bytes
for row values at 0x7fe6fee76390
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:522]:
db_mongodb_convert_bson(): looking for field[0] named: table_version
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:610]:
db_mongodb_convert_bson(): RES_NAMES(0x7fe6fee72490)[0]=[table_version] (1)
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:682]:
db_mongodb_convert_result(): retrieved number of rows: 1
 *0(3068) ERROR: <core> [db.c:414]: db_table_version(): invalid type (2) or
nul (0) version columns for presentity*



ALL Log:

Listening on
             udp: 10.0.20.100:5080
Aliases:

 0(3066) DEBUG: <core> [cfg/cfg.c:176]: cfg_declare(): DEBUG:
register_cfg_def(): new config group has been registered: 'core' (num=50,
size=200)
 0(3066) DEBUG: <core> [cfg/cfg.c:176]: cfg_declare(): DEBUG:
register_cfg_def(): new config group has been registered: 'tcp' (num=26,
size=104)
 0(3066) DEBUG: <core> [timer.c:255]: init_timer(): starting with
*ticks=1210106959
 0(3066) DEBUG: <core> [timer.c:297]: init_timer(): timer_list between
0x7fe6ebf85728 and 0x7fe6ebfc9728
 0(3066) INFO: <core> [tcp_main.c:4656]: init_tcp(): using epoll_lt as the
io watch method (auto detected)
 0(3068) DEBUG: <core> [daemonize.c:207]: enable_dumpable(): trying enable
core dumping...
 0(3068) DEBUG: <core> [daemonize.c:225]: enable_dumpable(): core dumping
is enabled now (1)...
 0(3068) DEBUG: <core> [daemonize.c:583]: set_core_dump(): core dump limits
set to 18446744073709551615
 0(3068) DEBUG: <core> [async_task.c:88]: async_task_init(): start
initializing asynk task framework
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): db_text
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): db_mysql
 0(3068) DEBUG: db_mysql [km_db_mysql.c:86]: kam_mysql_mod_init(): MySQL
client version is 5.1.73
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): db_mongodb
 0(3068) DEBUG: db_mongodb [db_mongodb_mod.c:98]: mod_init(): module
initializing
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): sl
 0(3068) DEBUG: <core> [md5utils.c:67]: MD5StringArray(): MD5 calculated:
f452807bca511b98621cbbe6e749d8ef
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <load_tm> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) ERROR: tm [tm_load.c:37]: load_tm(): tm:load_tm: Module not
initialized yet, make sure that all modules that need tm module are loaded
after tm in the configuration file
 0(3068) INFO: sl [sl.c:157]: mod_init(): could not bind tm module - only
stateless mode available during modules initialization
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): maxfwd
 0(3068) DEBUG: <core> [cfg/cfg.c:176]: cfg_declare(): DEBUG:
register_cfg_def(): new config group has been registered: 'maxfwd' (num=1,
size=4)
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): textops
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): tm
 0(3068) DEBUG: tm [tm.c:756]: mod_init(): TM - (sizeof cell=488,
sip_msg=1768) initializing...
 0(3068) DEBUG: tm [callid.c:101]: init_callid(): Call-ID initialization:
'76bf762544f60619'
 0(3068) DEBUG: tm [lock.c:74]: lock_initialize(): DEBUG: lock_initialize:
lock initialization started
 0(3068) DEBUG: tm [timer.c:199]: tm_init_timers(): tm: tm_init_timers:
fr=480 fr_inv=1920 wait=80 delete=4 t1=500 t2=4000 max_inv_lifetime=2880
max_noninv_lifetime=512
 0(3068) DEBUG: <core> [cfg/cfg.c:176]: cfg_declare(): DEBUG:
register_cfg_def(): new config group has been registered: 'tm' (num=36,
size=168)
 0(3068) DEBUG: <core> [md5utils.c:67]: MD5StringArray(): MD5 calculated:
eabd4dc455c32eca91da2be9405373ce
 0(3068) DEBUG: <core> [md5utils.c:67]: MD5StringArray(): MD5 calculated:
176231eb72a239b3e7f931a1ef6c4100
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): rr
 0(3068) DEBUG: <core> [sr_module.c:678]: find_mod_export_record():
find_export_record: <bind_ob> not found
 0(3068) INFO: rr [../outbound/api.h:54]: ob_load_api(): Failed to import
bind_ob
 0(3068) INFO: rr [rr_mod.c:174]: mod_init(): outbound module not available
 0(3068) DEBUG: <core> [sr_module.c:942]: init_mod(): presence
 0(3068) DEBUG: presence [presence.c:274]: mod_init():
db_url=mongodb://localhost/kamailio/28/0x7fe6fee55608
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <bind_sl> in module sl
[/usr/local/lib64/kamailio/modules/sl.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <load_tm> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <t_newtran> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <t_relay_to_tcp> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <t_relay_to_udp> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <t_relay> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <t_forward_nonack> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <t_release> in module tm
[/usr/local/lib64/kamailio/modules/tm.so]
 0(3068) DEBUG: <core> [sr_module.c:672]: find_mod_export_record():
find_export_record: found <db_bind_api> in module db_mongodb
[/usr/local/lib64/kamailio/modules/db_mongodb.so]
 0(3068) DEBUG: <core> [db.c:205]: db_bind_mod(): using db bind api for
db_mongodb
 0(3068) DEBUG: <core> [db.c:310]: db_do_init2(): connection 0x7fe6fee72190
not found in pool
 0(3068) DEBUG: db_mongodb [mongodb_connection.c:55]:
db_mongodb_new_connection(): connection open to:
mongodb://localhost/kamailio
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:851]: db_mongodb_query(): query
to collection [version]
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:885]: db_mongodb_query(): query
filter: { "table_name" : "presentity" }
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:904]: db_mongodb_query():
columns filter: { "table_version" : 1 }
 0(3068) DEBUG: <core> [db_res.c:116]: db_new_result(): allocate 56 bytes
for result set at 0x7fe6fee72338
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:349]: db_mongodb_get_columns():
1 columns returned from the query
 0(3068) DEBUG: <core> [db_res.c:154]: db_allocate_columns(): allocate 8
bytes for result names at 0x7fe6fee72410
 0(3068) DEBUG: <core> [db_res.c:165]: db_allocate_columns(): allocate 4
bytes for result types at 0x7fe6fee72450
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns():
Found a field[0] named: table_version
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:396]: db_mongodb_get_columns():
allocate 16 bytes for RES_NAMES[0] at 0x7fe6fee72490
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns():
use DB1_DOUBLE result type
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:460]: db_mongodb_get_columns():
RES_NAMES(0x7fe6fee72490)[0]=[table_version] (1)
 0(3068) DEBUG: <core> [db_res.c:184]: db_allocate_rows(): allocate 16000
bytes for rows at 0x7fe6fee724d8
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:671]:
db_mongodb_convert_result(): selected document: { "_id" : { "$oid" :
"55d2fc84b04c015195aee4b2" }, "table_version" : 4 }
 0(3068) DEBUG: <core> [db_row.c:117]: db_allocate_row(): allocate 32 bytes
for row values at 0x7fe6fee76390
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:522]:
db_mongodb_convert_bson(): looking for field[0] named: table_version
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:610]:
db_mongodb_convert_bson(): RES_NAMES(0x7fe6fee72490)[0]=[table_version] (1)
 0(3068) DEBUG: db_mongodb [mongodb_dbase.c:682]:
db_mongodb_convert_result(): retrieved number of rows: 1
 0(3068) ERROR: <core> [db.c:414]: db_table_version(): invalid type (2) or
nul (0) version columns for presentity
 0(3068) DEBUG: <core> [db_res.c:79]: db_free_columns(): freeing 1 columns
 0(3068) DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing
RES_NAMES[0] at 0x7fe6fee72490
 0(3068) DEBUG: <core> [db_res.c:92]: db_free_columns(): freeing result
names at 0x7fe6fee72410
 0(3068) DEBUG: <core> [db_res.c:97]: db_free_columns(): freeing result
types at 0x7fe6fee72450
 0(3068) DEBUG: <core> [db_res.c:52]: db_free_rows(): freeing 1 rows
 0(3068) DEBUG: <core> [db_row.c:95]: db_free_row(): freeing row values at
0x7fe6fee76390
 0(3068) DEBUG: <core> [db_res.c:60]: db_free_rows(): freeing rows at
0x7fe6fee724d8
 0(3068) DEBUG: <core> [db_res.c:134]: db_free_result(): freeing result set
at 0x7fe6fee72338
 0(3068) ERROR: <core> [db.c:432]: db_check_table_version(): querying
version for table presentity
* 0(3068) ERROR: presence [presence.c:358]: mod_init(): error during table
version check*
* 0(3068) ERROR: <core> [sr_module.c:945]: init_mod(): Error while
initializing module presence
(/usr/local/lib64/kamailio/modules/presence.so)*
ERROR: error while initializing modules
 0(3068) DEBUG: <core> [db_pool.c:100]: pool_remove(): removing connection
from the pool
 0(3068) DEBUG: tm [t_funcs.c:86]: tm_shutdown(): DEBUG: tm_shutdown : start
 0(3068) DEBUG: tm [t_funcs.c:89]: tm_shutdown(): DEBUG: tm_shutdown :
emptying hash table
 0(3068) DEBUG: tm [t_funcs.c:91]: tm_shutdown(): DEBUG: tm_shutdown :
removing semaphores
 0(3068) DEBUG: tm [t_funcs.c:93]: tm_shutdown(): DEBUG: tm_shutdown :
destroying tmcb lists
 0(3068) DEBUG: tm [t_funcs.c:96]: tm_shutdown(): DEBUG: tm_shutdown : done
 0(3068) DEBUG: db_text [dbtext.c:106]: destroy(): destroy ...
 0(3068) INFO: <core> [sctp_core.c:53]: sctp_core_destroy(): SCTP API not
initialized
 0(3068) DEBUG: <core> [mem/shm_mem.c:232]: shm_mem_destroy():
shm_mem_destroy
 0(3068) DEBUG: <core> [mem/shm_mem.c:235]: shm_mem_destroy(): destroying
the shared memory lock


Best regards

2015-08-18 12:03 GMT+01:00 Daniel-Constantin Mierla <miconda at gmail.com>:

> Hello,
>
> can you run with debug=3 and see what is printed in syslog?
>
> Cheers,
> Daniel
>
>
> On 18/08/15 11:36, José Seabra wrote:
>
> Hi Daniel,
>
> Thank you for your reply,
>
> I did what you suggested in your last email, but the issue remains, maybe
> i did something wrong, so in order we try understand if i did or not
> something wrong please have a look at the mongodb commands to create db,
> collection and document.
>
> > use kamailio
> switched to db kamailio
> >
> > db
> kamailio
> > db.createCollection("version")
> > show collections
> system.indexes
> version
> >
> > db.getCollection("version").insert({table_name: "presentity",
> table_version: 4 })
> WriteResult({ "nInserted" : 1 })
> > db.getCollection("version").find({})
> { "_id" : ObjectId("55d2fb67b04c015195aee4b1"), "table_name" :
> "presentity", "table_version" : 4 }
>
> Best Regards
> José Seabra
>
>
>
>
> 2015-08-18 7:09 GMT+01:00 Daniel-Constantin Mierla <miconda at gmail.com>:
>
>> Indeed the issue is related to checking the version table. You have to
>> create a collection named "version" in kamailio database, then add the
>> records for the tables you are using with the fields:
>>
>>   - table_name corresponding to the table name (e.g., presentity)
>>   - table_version value as in lib/srdb1/schema/* (e.g., 4)
>>
>> If you have kamailio database created in mysql (or other sql server), you
>> can simply look at the content of table "version".
>>
>> If I get to better internet connection while traveling these days, I will
>> try to put together proper guidelines.
>>
>> Cheers,
>> Daniel
>>
>>
>> On 17/08/15 19:10, José Seabra wrote:
>>
>> This shouldn't check the table version in mongodb or i'm wrong?
>> Best regards
>>
>> 2015-08-17 16:45 GMT+01:00 José Seabra <joseseabra4 at gmail.com>:
>>
>>> I have tried that but kamailio gave me the following error:
>>>
>>>  0(2344) ERROR: <core> [db.c:435]: db_check_table_version(): invalid
>>> version 0 for table presentity found, expected 4 (check table structure and
>>> table "version")
>>>  0(2344) ERROR: presence [presence.c:358]: mod_init(): error during
>>> table version check
>>>  0(2344) ERROR: <core> [sr_module.c:945]: init_mod(): Error while
>>> initializing module presence (/usr/local/lib64/kamailio/modules/presence.so)
>>> ERROR: error while initializing modules
>>>
>>>
>>>
>>> Presence module configuration:
>>>
>>> modparam("presence", "server_address", "sip:10.0.20.100:5080")
>>> modparam("presence", "subs_db_mode", 3)
>>> modparam("presence", "expires_offset", 60)
>>> modparam("presence", "send_fast_notify", 0)
>>> modparam("presence", "clean_period", 30)
>>> modparam("presence", "publ_cache", 0)
>>> modparam("presence", "sip_uri_match", 1)
>>> modparam("presence", "waitn_time", 1)
>>> modparam("presence", "notifier_processes", 0)
>>> modparam("presence", "db_url", "mongodb://localhost/kamailio")
>>>
>>> Best Regards
>>> José Seabra
>>>
>>>
>>> 2015-08-17 16:33 GMT+01:00 Daniel-Constantin Mierla <miconda at gmail.com>:
>>>
>>>> Hello,
>>>>
>>>> do not remember exactly if you need to create an empty collection,
>>>> anyhow, the main idea is that there is no table definition, because mongo
>>>> is a document-storage like engine. The records store all the details about
>>>> all the fields.
>>>>
>>>> In other words, you should be ready to go after basic setup of mongodb
>>>> collection and configuring kamailio modules to use the server.
>>>>
>>>> Cheers,
>>>> Daniel
>>>>
>>>>
>>>> On 17/08/15 16:51, José Seabra wrote:
>>>>
>>>> Hello all,
>>>> I would like to test my presence server using db_mongodb as database
>>>> server instead of using mysql, but i don't find any documentation
>>>> explaining how i can configure mongodb database(data structure) for
>>>> presence or even for the other kamailio modules.
>>>>
>>>> Can someone  guide me in this setup?
>>>>
>>>> Best Regards
>>>>
>>>> --
>>>> Cumprimentos
>>>> José Seabra
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>> --
>>>> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>> Book: SIP Routing With Kamailio - http://www.asipto.com
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>>> sr-users at lists.sip-router.org
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Cumprimentos
>>> José Seabra
>>>
>>
>>
>>
>> --
>> Cumprimentos
>> José Seabra
>>
>>
>> --
>> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>> Book: SIP Routing With Kamailio - http://www.asipto.com
>>
>>
>
>
> --
> Cumprimentos
> José Seabra
>
>
> --
> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Book: SIP Routing With Kamailio - http://www.asipto.com
>
>


-- 
Cumprimentos
José Seabra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150818/2a75b4bf/attachment.html>


More information about the sr-users mailing list