[SR-Users] kamailio does not start with db_mongdb and usrloc

Daniel-Constantin Mierla miconda at gmail.com
Wed Feb 28 15:25:59 CET 2018


Hello,

I see in the pcap that the returned error contains:

Failed to parse: { find: "version", filter: { table_name: "location" },
table_version: 1, $readPreference: { mode: "secondaryPreferred" }, $db:
"kamailio" }. Unrecognized field 'table_version'.

What is the version of mongoc library? I tried to quick search on google
and found a similar report :

  - https://github.com/mongodb/mongo-php-driver/issues/516

On the other hand, it works with same lib but for different versions of
mongo server ... so might be something different.

Cheers,
Daniel

On 27.02.18 11:26, Stephane wrote:
> Hello Daniel,
>
> You will find two pcap files in attachment. I am using the same mongoc
> library version in both cases.
> Let me know if you need more info.
>
> Kind regards,
> Stephane
>
> On 27 February 2018 at 09:01, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hello,
>
>     can you send here the requests sent by kamailio for the two
>     mongodb versions? To compare and see where it can be fixed.
>
>     Also, were you using the same mongoc library version in both cases?
>
>     Cheers,
>     Daniel
>
>
>     On 26.02.18 12:57, Stephane wrote:
>>     Hello,
>>     I made some additional tests. 
>>     The problem is only present when kamailio is facing mongo release
>>     3.2 (or higher). 
>>     With mongo version 3.0 (or lower), the request sent by kamailio
>>     is different: it contains $query and $table_version elements and
>>     mongo accepts it.
>>     Kind regards,
>>     Stephane
>>
>>     On 23 February 2018 at 10:48, Stephane <mandalavoip at gmail.com
>>     <mailto:mandalavoip at gmail.com>> wrote:
>>
>>         Hello Daniel,
>>
>>         I took a pcap trace. And I see the following in the answer
>>         sent by mongo
>>
>>         Failed to parse: { find: "version", filter: { table_name:
>>         "location" }, table_version: 1, $db: "kamailio",
>>         $readPreference: { mode: "primaryPreferred" }, $clusterTime:
>>         { clusterTime: Timestamp(1519379980, 1), signature: { hash:
>>         BinData(0, 0000000000000000000000000000000000000000), keyId:
>>         0 } } }. Unrecognized field
>>         'table_version'.codecodeNameFailedToParseoperationTimeZ$clusterTimeXclusterTimeZsignature3hashkeyId
>>
>>         Kind regards,
>>         Stephane
>>
>>         On 23 February 2018 at 09:39, Daniel-Constantin Mierla
>>         <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>             Hello,
>>
>>             I don't know if you can see the result sent back by
>>             mongodb in its logs, it doesn't show it there. Maybe you
>>             can sniff the traffic on the network and see if mongodb
>>             sends the proper response back. Kamailio logs like
>>             nothing was retrieved.
>>
>>             Cheers,
>>             Daniel
>>
>>
>>             On 22.02.18 18:02, Stephane Focant wrote:
>>>             Hello,
>>>             I have an issue when I try to use kamailio 5.1 with
>>>             usrloc and db_mongdb modules.
>>>             When I try to start kamailio, I get the following error:
>>>
>>>             0(22216) DEBUG: <core> [db.c:314]: db_do_init2():
>>>             connection 0x7f735b5c4100 not found in pool
>>>              0(22216) DEBUG: db_mongodb [mongodb_connection.c:55]:
>>>             db_mongodb_new_connection(): connection open to:
>>>             mongodb://10.0.12.149
>>>             <http://10.0.12.149>,10.0.12.150,10.0.12.151/kamailio?replicaSet=sre_location&slaveOk=true&readPreference=primaryPreferred
>>>             <http://10.0.12.151/kamailio?replicaSet=sre_location&slaveOk=true&readPreference=primaryPreferred>
>>>              0(22216) DEBUG: db_mongodb [mongodb_dbase.c:864]:
>>>             db_mongodb_query(): query to collection [version]
>>>              0(22216) DEBUG: db_mongodb [mongodb_dbase.c:898]:
>>>             db_mongodb_query(): query filter: { "table_name" :
>>>             "location" }
>>>              0(22216) DEBUG: db_mongodb [mongodb_dbase.c:917]:
>>>             db_mongodb_query(): columns filter: { "table_version" : 1 }
>>>              0(22216) DEBUG: <core> [db_res.c:120]: db_new_result():
>>>             allocate 56 bytes for result set at 0x7f735b5c4450
>>>              0(22216) DEBUG: db_mongodb [mongodb_dbase.c:746]:
>>>             db_mongodb_store_result(): no result from mongodb
>>>              0(22216) DEBUG: <core> [db.c:404]: db_table_version():
>>>             no row for table location found
>>>              0(22216) ERROR: <core> [db.c:450]:
>>>             db_check_table_version(): invalid version 0 for table
>>>             location found, expected 9 (check table structure and
>>>             table "version")
>>>              0(22216) ERROR: usrloc [dlist.c:659]:
>>>             register_udomain(): error during table version check.
>>>              0(22216) DEBUG: <core> [db_pool.c:100]: pool_remove():
>>>             removing connection from the pool
>>>              0(22216) ERROR: registrar [registrar.c:651]:
>>>             domain_fixup(): failed to register domain
>>>              0(22216) ERROR: <core> [core/route.c:1154]:
>>>             fix_actions(): fixing failed (code=-1) at
>>>             cfg:/usr/local/kamailio-5.1/etc/kamailio/kamailio.cfg:660
>>>              0(22216) ERROR: <core> [core/rvalue.c:3860]:
>>>             fix_rval_expr(): failure in cfg at line: 660 col: 22
>>>              0(22216) ERROR: <core> [core/rvalue.c:3860]:
>>>             fix_rval_expr(): failure in cfg at line: 660 col: 22
>>>              0(22216) ERROR: <core> [core/route.c:1154]:
>>>             fix_actions(): fixing failed (code=-1) at
>>>             cfg:/usr/local/kamailio-5.1/etc/kamailio/kamailio.cfg:663
>>>             ERROR: error -1 while trying to fix configuration
>>>              0(22216) DEBUG: tm [t_funcs.c:85]: tm_shutdown(): start
>>>              0(22216) DEBUG: tm [t_funcs.c:88]: tm_shutdown():
>>>             emptying hash table
>>>              0(22216) DEBUG: tm [t_funcs.c:90]: tm_shutdown():
>>>             removing semaphores
>>>              0(22216) DEBUG: tm [t_funcs.c:92]: tm_shutdown():
>>>             destroying tmcb lists
>>>              0(22216) DEBUG: tm [t_funcs.c:95]: tm_shutdown(): done
>>>              0(22216) INFO: <core> [core/sctp_core.c:53]:
>>>             sctp_core_destroy(): SCTP API not initialized
>>>              0(22216) DEBUG: <core> [core/mem/shm.c:261]:
>>>             shm_destroy_manager(): destroying memory manager: q_malloc
>>>              0(22216) DEBUG: <core> [core/mem/q_malloc.c:1165]:
>>>             qm_shm_lock_destroy(): destroying the shared memory lock
>>>              0(22216) DEBUG: <core> [core/mem/pkg.c:91]:
>>>             pkg_destroy_manager(): destroying memory manager: q_malloc
>>>
>>>
>>>             In mongoDB, I have the collection "version" in the db
>>>             kamailio, and the entries needed for usrloc (location
>>>             and location_attrs):
>>>             sre_location:PRIMARY> use kamailio
>>>             switched to db kamailio
>>>             sre_location:PRIMARY> db.getCollection("version").find()
>>>             { "_id" : ObjectId("5a8ec43c601b262bef82a595"),
>>>             "table_name" : "location", "table_version" : 9 }
>>>             { "_id" : ObjectId("5a8edb72a3ec40427577b8d0"),
>>>             "table_name" : "location_attrs", "table_version" : 1 }
>>>
>>>
>>>             And logs in mongo show the following info when kamailio
>>>             starts:
>>>
>>>             2018-02-22T17:13:02.604+0100 I NETWORK  [conn90]
>>>             received client metadata from 10.0.12.180:56320
>>>             <http://10.0.12.180:56320> conn: { driver: { name:
>>>             "mongoc", version: "1.9.2" }, os: { type: "Linux", name:
>>>             "CentOS", version: "6.9 (Final)", architecture: "x86_64"
>>>             }, platform: "cfg=0x1563000 posix=200809 CC=GCC 4.4.7
>>>             20120313 (Red Hat 4.4.7-18) CFLAGS="" LDFLAGS=""" }
>>>             2018-02-22T17:13:02.604+0100 I COMMAND  [conn90] command
>>>             admin.$cmd command: isMaster { isMaster: 1, client: {
>>>             driver: { name: "mongoc", version: "1.9.2" }, os: {
>>>             type: "Linux", name: "CentOS", version: "6.9 (Final)",
>>>             architecture: "x86_64" }, platform: "cfg=0x1563000
>>>             posix=200809 CC=GCC 4.4.7 20120313 (Red Hat 4.4.7-18)
>>>             CFLAGS="" LDFLAGS=""" }, compression: [],
>>>             $readPreference: { mode: "secondaryPreferred" }, $db:
>>>             "admin" } numYields:0 reslen:716 locks:{}
>>>             protocol:op_query 0ms
>>>             2018-02-22T17:13:02.604+0100 I COMMAND  [conn90] command
>>>             kamailio.$cmd command: find { find: "version", filter: {
>>>             table_name: "location" }, table_version: 1, $db:
>>>             "kamailio", $readPreference: { mode: "primaryPreferred"
>>>             }, $clusterTime: { clusterTime: Timestamp(1519315979,
>>>             1), signature: { hash: BinData(0,
>>>             0000000000000000000000000000000000000000), keyId: 0 } }
>>>             } numYields:0 reslen:531 locks:{} protocol:op_msg 0ms
>>>             2018-02-22T17:13:02.605+0100 I NETWORK  [conn90] end
>>>             connection 10.0.12.180:56320 <http://10.0.12.180:56320>
>>>             (9 connections now open)
>>>
>>>             I probably miss something: it is not clear to me why
>>>             kamailio is not able to retrieve the value of
>>>             table_version for the table_name location. Any idea
>>>             would be very welcome !
>>>
>>>             I use mongo-c-driver 1.9.2 and mongodb 3.6
>>>
>>>             Thank you.
>>>             Stephane
>>>
>>>
>>>             _______________________________________________
>>>             Kamailio (SER) - Users Mailing List
>>>             sr-users at lists.kamailio.org
>>>             <mailto:sr-users at lists.kamailio.org>
>>>             https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>             <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users>
>>
>>             -- 
>>             Daniel-Constantin Mierla
>>             www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda
>>             <http://www.linkedin.com/in/miconda>
>>             Kamailio Advanced Training - March 5-7, 2018, Berlin - www.asipto.com <http://www.asipto.com>
>>             Kamailio World Conference - May 14-16, 2018 - www.kamailioworld.com <http://www.kamailioworld.com>
>>
>>
>>
>
>     -- 
>     Daniel-Constantin Mierla
>     www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>     Kamailio Advanced Training - March 5-7, 2018, Berlin - www.asipto.com <http://www.asipto.com>
>     Kamailio World Conference - May 14-16, 2018 - www.kamailioworld.com <http://www.kamailioworld.com>
>
>

-- 
Daniel-Constantin Mierla
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - March 5-7, 2018, Berlin - www.asipto.com
Kamailio World Conference - May 14-16, 2018 - www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20180228/b0f85298/attachment.html>


More information about the sr-users mailing list