Hello!
I want to keep user location in mongodb, but Kamailio does not start well.
Configuration:
loadmodule "usrloc.so" loadmodule "db_mongodb.so" modparam("usrloc", "db_insert_null", 1) modparam("usrloc", "db_url", "mongodb://mongodb.test/kamailio") modparam("usrloc", "db_mode", 2) modparam("usrloc", "timer_interval", 30) modparam("usrloc", "desc_time_order", 1)
Mongodb:
rs0:PRIMARY> use kamailio switched to db kamailio rs0:PRIMARY> db.location.find() { "_id" : ObjectId("5be024d6b9d8febf4ae19681"), "name" : "location", "version" : 9, "columns" : { "id" : { "type" : "int", "default" : null, "null" : false }, "ruid" : { "type" : "string", "default" : "", "null" : false }, "username" : { "type" : "string", "default" : "", "null" : false }, "domain" : { "type" : "string", "default" : null, "null" : true }, "contact" : { "type" : "string", "default" : "", "null" : false }, "received" : { "type" : "string", "default" : null, "null" : true }, "path" : { "type" : "string", "default" : null, "null" : true }, "expires" : { "type" : "datetime", "default" : "2030-05-28 21:32:15", "null" : false }, "q" : { "type" : "double", "default" : 1, "null" : false }, "callid" : { "type" : "string", "default" : "Default-Call-ID", "null" : false }, "cseq" : { "type" : "int", "default" : 1, "null" : false }, "last_modified" : { "type" : "datetime", "default" : "2000-01-01 00:00:01", "null" : false }, "flags" : { "type" : "int", "default" : 0, "null" : false }, "cflags" : { "type" : "int", "default" : 0, "null" : false }, "user_agent" : { "type" : "string", "default" : "", "null" : false }, "socket" : { "type" : "string", "default" : null, "null" : true }, "methods" : { "type" : "int", "default" : null, "null" : true }, "instance" : { "type" : "string", "default" : null, "null" : true }, "reg_id" : { "type" : "int", "default" : 0, "null" : false }, "server_id" : { "type" : "int", "default" : 0, "null" : false }, "connection_id" : { "type" : "int", "default" : 0, "null" : false }, "keepalive" : { "type" : "int", "default" : 0, "null" : false }, "partition" : { "type" : "int", "default" : 0, "null" : false } } } { "_id" : ObjectId("5be02a77175610be86a1a589"), "username" : "dummy_user" }
Syslog:
Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns(): field [username] not found in result iterator Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:815]: db_mongodb_store_result(): failed to set the columns Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1018]: db_mongodb_query(): failed to store result Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1027]: db_mongodb_query(): failed to do the query Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [usrloc_mod.c:430]: child_init(): child(1): failed to preload domain 'location' Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/sr_module.c:946]: init_mod_child(): error while initializing module usrloc (/usr/lib64/kamailio/modules/usrloc.so) (idx: 1 rank: 1 desc: [udp receiver child=0 sock=10.10.10.10:5060]) Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed for process 1, pid 21543, "udp receiver child=0 sock=10.10.10.10:5060" Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: CRITICAL: <core> [main.c:1607]: main_loop(): Cannot fork
2018-11-05T13:07:19.117+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } 2018-11-05T13:07:19.118+0100 I COMMAND [conn367] command kamailio.version command: find { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:148 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.118+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } 2018-11-05T13:07:19.119+0100 I COMMAND [conn367] command kamailio.location command: find { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:155 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.178+0100 D COMMAND [conn368] run command kamailio.$cmd { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } 2018-11-05T13:07:19.179+0100 I COMMAND [conn368] command kamailio.location command: find { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:2 reslen:180 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms
[root@dev-rtpengine kamailio]# kamailio -v version: kamailio 5.1.6 (x86_64/linux) 7d1964 flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 7d1964 compiled on 11:10:15 Nov 4 2018 with gcc 4.8.5
Hello,
how was the record (json document) inserted in the location table? It doesn't seem to have valid values...
Cheers, Daniel
On 05.11.18 13:13, Denys Pozniak wrote:
Hello!
I want to keep user location in mongodb, but Kamailio does not start well.
Configuration:
loadmodule "usrloc.so" loadmodule "db_mongodb.so" modparam("usrloc", "db_insert_null", 1) modparam("usrloc", "db_url", "mongodb://mongodb.test/kamailio") modparam("usrloc", "db_mode", 2) modparam("usrloc", "timer_interval", 30) modparam("usrloc", "desc_time_order", 1)
Mongodb:
rs0:PRIMARY> use kamailio switched to db kamailio rs0:PRIMARY> db.location.find() { "_id" : ObjectId("5be024d6b9d8febf4ae19681"), "name" : "location", "version" : 9, "columns" : { "id" : { "type" : "int", "default" : null, "null" : false }, "ruid" : { "type" : "string", "default" : "", "null" : false }, "username" : { "type" : "string", "default" : "", "null" : false }, "domain" : { "type" : "string", "default" : null, "null" : true }, "contact" : { "type" : "string", "default" : "", "null" : false }, "received" : { "type" : "string", "default" : null, "null" : true }, "path" : { "type" : "string", "default" : null, "null" : true }, "expires" : { "type" : "datetime", "default" : "2030-05-28 21:32:15", "null" : false }, "q" : { "type" : "double", "default" : 1, "null" : false }, "callid" : { "type" : "string", "default" : "Default-Call-ID", "null" : false }, "cseq" : { "type" : "int", "default" : 1, "null" : false }, "last_modified" : { "type" : "datetime", "default" : "2000-01-01 00:00:01", "null" : false }, "flags" : { "type" : "int", "default" : 0, "null" : false }, "cflags" : { "type" : "int", "default" : 0, "null" : false }, "user_agent" : { "type" : "string", "default" : "", "null" : false }, "socket" : { "type" : "string", "default" : null, "null" : true }, "methods" : { "type" : "int", "default" : null, "null" : true }, "instance" : { "type" : "string", "default" : null, "null" : true }, "reg_id" : { "type" : "int", "default" : 0, "null" : false }, "server_id" : { "type" : "int", "default" : 0, "null" : false }, "connection_id" : { "type" : "int", "default" : 0, "null" : false }, "keepalive" : { "type" : "int", "default" : 0, "null" : false }, "partition" : { "type" : "int", "default" : 0, "null" : false } } } { "_id" : ObjectId("5be02a77175610be86a1a589"), "username" : "dummy_user" }
Syslog:
Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns(): field [username] not found in result iterator Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:815]: db_mongodb_store_result(): failed to set the columns Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1018]: db_mongodb_query(): failed to store result Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1027]: db_mongodb_query(): failed to do the query Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [usrloc_mod.c:430]: child_init(): child(1): failed to preload domain 'location' Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/sr_module.c:946]: init_mod_child(): error while initializing module usrloc (/usr/lib64/kamailio/modules/usrloc.so) (idx: 1 rank: 1 desc: [udp receiver child=0 sock=10.10.10.10:5060 http://10.10.10.10:5060]) Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed for process 1, pid 21543, "udp receiver child=0 sock=10.10.10.10:5060 http://10.10.10.10:5060" Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: CRITICAL: <core> [main.c:1607]: main_loop(): Cannot fork
2018-11-05T13:07:19.117+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } 2018-11-05T13:07:19.118+0100 I COMMAND [conn367] command kamailio.version command: find { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:148 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.118+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } 2018-11-05T13:07:19.119+0100 I COMMAND [conn367] command kamailio.location command: find { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:155 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.178+0100 D COMMAND [conn368] run command kamailio.$cmd { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } 2018-11-05T13:07:19.179+0100 I COMMAND [conn368] command kamailio.location command: find { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:2 reslen:180 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms
[root@dev-rtpengine kamailio]# kamailio -v version: kamailio 5.1.6 (x86_64/linux) 7d1964 flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 7d1964 compiled on 11:10:15 Nov 4 2018 with gcc 4.8.5
--
BR, Denys Pozniak
Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
My steps: 1) wget https://raw.githubusercontent.com/kamailio/kamailio/master/utils/kamctl/mong...
2) [root@mongodb-1 root]# mongoimport --db test --collection location --file location.json -vvvv
2018-11-05T16:17:30.422+0100 using 1 decoding workers 2018-11-05T16:17:30.422+0100 using 1 insert workers 2018-11-05T16:17:30.423+0100 filesize: 2131 bytes 2018-11-05T16:17:30.423+0100 using fields: 2018-11-05T16:17:30.424+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:17:30.428+0100 connected to: localhost 2018-11-05T16:17:30.428+0100 ns: test.location 2018-11-05T16:17:30.428+0100 connected to node type: replset 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 Failed: error processing document #1: invalid character ':' after array element 2018-11-05T16:17:30.428+0100 imported 0 documents
3) Tested with JSON validator and the same:
Results
Error: Parse error on line 5: ... "columns": [ "id": { "type": "int" ----------------------^
Expecting 'EOF', '}', ',', ']', got ':'
4) Changed manually
"columns": [ --> "columns": { ] -- > }
5) [root@mongodb-1 root]# mongoimport --db test --collection location --file location.json -vvvv
2018-11-05T16:21:11.454+0100 using 1 decoding workers 2018-11-05T16:21:11.455+0100 using 1 insert workers 2018-11-05T16:21:11.455+0100 filesize: 2132 bytes 2018-11-05T16:21:11.456+0100 using fields: 2018-11-05T16:21:11.456+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:21:11.460+0100 connected to: localhost 2018-11-05T16:21:11.460+0100 ns: test.location 2018-11-05T16:21:11.461+0100 connected to node type: replset 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.463+0100 got line: [{name location} {version 9} {columns [{id [{type int} {default <nil>} {null false}]} {ruid [{type string} {default } {null false}]} {username [{type string} {default } {null false}]} {domain [{type string} {default <nil>} {null true}]} {contact [{type string} {default } {null false}]} {received [{type string} {default <nil>} {null true}]} {path [{type string} {default <nil>} {null true}]} {expires [{type datetime} {default 2030-05-28 21:32:15} {null false}]} {q [{type double} {default 1} {null false}]} {callid [{type string} {default Default-Call-ID} {null false}]} {cseq [{type int} {default 1} {null false}]} {last_modified [{type datetime} {default 2000-01-01 00:00:01} {null false}]} {flags [{type int} {default 0} {null false}]} {cflags [{type int} {default 0} {null false}]} {user_agent [{type string} {default } {null false}]} {socket [{type string} {default <nil>} {null true}]} {methods [{type int} {default <nil>} {null true}]} {instance [{type string} {default <nil>} {null true}]} {reg_id [{type int} {default 0} {null false}]} {server_id [{type int} {default 0} {null false}]} {connection_id [{type int} {default 0} {null false}]} {keepalive [{type int} {default 0} {null false}]} {partition [{type int} {default 0} {null false}]}]}] 2018-11-05T16:21:11.464+0100 got extended line: bson.D{bson.DocElem{Name:"name", Value:"location"}, bson.DocElem{Name:"version", Value:9}, bson.DocElem{Name:"columns", Value:bson.D{bson.DocElem{Name:"id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"ruid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"username", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"domain", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"contact", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"received", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"path", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"expires", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2030-05-28 21:32:15"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"q", Value:bson.D{bson.DocElem{Name:"type", Value:"double"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"callid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:"Default-Call-ID"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cseq", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"last_modified", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2000-01-01 00:00:01"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"flags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cflags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"user_agent", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"socket", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"methods", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"instance", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"reg_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"server_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"connection_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"keepalive", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"partition", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}}}} 2018-11-05T16:21:11.603+0100 imported 1 document
[root@mongodb-1 root]# mongo --version MongoDB shell version v3.4.10 git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 allocator: tcmalloc modules: none build environment: distmod: rhel70 distarch: x86_64 target_arch: x86_64
пн, 5 нояб. 2018 г. в 16:55, Daniel-Constantin Mierla miconda@gmail.com:
Hello,
how was the record (json document) inserted in the location table? It doesn't seem to have valid values...
Cheers, Daniel
On 05.11.18 13:13, Denys Pozniak wrote:
Hello!
I want to keep user location in mongodb, but Kamailio does not start well.
Configuration:
loadmodule "usrloc.so" loadmodule "db_mongodb.so" modparam("usrloc", "db_insert_null", 1) modparam("usrloc", "db_url", "mongodb://mongodb.test/kamailio") modparam("usrloc", "db_mode", 2) modparam("usrloc", "timer_interval", 30) modparam("usrloc", "desc_time_order", 1)
Mongodb:
rs0:PRIMARY> use kamailio switched to db kamailio rs0:PRIMARY> db.location.find() { "_id" : ObjectId("5be024d6b9d8febf4ae19681"), "name" : "location", "version" : 9, "columns" : { "id" : { "type" : "int", "default" : null, "null" : false }, "ruid" : { "type" : "string", "default" : "", "null" : false }, "username" : { "type" : "string", "default" : "", "null" : false }, "domain" : { "type" : "string", "default" : null, "null" : true }, "contact" : { "type" : "string", "default" : "", "null" : false }, "received" : { "type" : "string", "default" : null, "null" : true }, "path" : { "type" : "string", "default" : null, "null" : true }, "expires" : { "type" : "datetime", "default" : "2030-05-28 21:32:15", "null" : false }, "q" : { "type" : "double", "default" : 1, "null" : false }, "callid" : { "type" : "string", "default" : "Default-Call-ID", "null" : false }, "cseq" : { "type" : "int", "default" : 1, "null" : false }, "last_modified" : { "type" : "datetime", "default" : "2000-01-01 00:00:01", "null" : false }, "flags" : { "type" : "int", "default" : 0, "null" : false }, "cflags" : { "type" : "int", "default" : 0, "null" : false }, "user_agent" : { "type" : "string", "default" : "", "null" : false }, "socket" : { "type" : "string", "default" : null, "null" : true }, "methods" : { "type" : "int", "default" : null, "null" : true }, "instance" : { "type" : "string", "default" : null, "null" : true }, "reg_id" : { "type" : "int", "default" : 0, "null" : false }, "server_id" : { "type" : "int", "default" : 0, "null" : false }, "connection_id" : { "type" : "int", "default" : 0, "null" : false }, "keepalive" : { "type" : "int", "default" : 0, "null" : false }, "partition" : { "type" : "int", "default" : 0, "null" : false } } } { "_id" : ObjectId("5be02a77175610be86a1a589"), "username" : "dummy_user" }
Syslog:
Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns(): field [username] not found in result iterator Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:815]: db_mongodb_store_result(): failed to set the columns Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1018]: db_mongodb_query(): failed to store result Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1027]: db_mongodb_query(): failed to do the query Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [usrloc_mod.c:430]: child_init(): child(1): failed to preload domain 'location' Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/sr_module.c:946]: init_mod_child(): error while initializing module usrloc (/usr/lib64/kamailio/modules/usrloc.so) (idx: 1 rank: 1 desc: [udp receiver child=0 sock=10.10.10.10:5060]) Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed for process 1, pid 21543, "udp receiver child=0 sock=10.10.10.10:5060" Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: CRITICAL: <core> [main.c:1607]: main_loop(): Cannot fork
2018-11-05T13:07:19.117+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } 2018-11-05T13:07:19.118+0100 I COMMAND [conn367] command kamailio.version command: find { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:148 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.118+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } 2018-11-05T13:07:19.119+0100 I COMMAND [conn367] command kamailio.location command: find { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:155 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.178+0100 D COMMAND [conn368] run command kamailio.$cmd { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } 2018-11-05T13:07:19.179+0100 I COMMAND [conn368] command kamailio.location command: find { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:2 reslen:180 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms
[root@dev-rtpengine kamailio]# kamailio -v version: kamailio 5.1.6 (x86_64/linux) 7d1964 flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 7d1964 compiled on 11:10:15 Nov 4 2018 with gcc 4.8.5
--
BR, Denys Pozniak
Kamailio (SER) - Users Mailing Listsr-users@lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com
Hello,
that file you get with wget is sort of schema definition, but doesn't have to be imported in mongo. Delete it, only Kamailio should insert into location table.
Cheers, Daniel
On 05.11.18 16:23, Denys Pozniak wrote:
My steps:
- wget
https://raw.githubusercontent.com/kamailio/kamailio/master/utils/kamctl/mong...
2) [root@mongodb-1 root]# mongoimport --db test --collection location --file location.json -vvvv
2018-11-05T16:17:30.422+0100 using 1 decoding workers 2018-11-05T16:17:30.422+0100 using 1 insert workers 2018-11-05T16:17:30.423+0100 filesize: 2131 bytes 2018-11-05T16:17:30.423+0100 using fields: 2018-11-05T16:17:30.424+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:17:30.428+0100 connected to: localhost 2018-11-05T16:17:30.428+0100 ns: test.location 2018-11-05T16:17:30.428+0100 connected to node type: replset 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 Failed: error processing document #1: invalid character ':' after array element 2018-11-05T16:17:30.428+0100 imported 0 documents
Tested with JSON validator and the same:
Results
Error: Parse error on line 5: ... "columns": [ "id": { "type": "int" ----------------------^ Expecting 'EOF', '}', ',', ']', got ':'
Changed manually
"columns": [ --> "columns": { ] -- > }
5) [root@mongodb-1 root]# mongoimport --db test --collection location --file location.json -vvvv
2018-11-05T16:21:11.454+0100 using 1 decoding workers 2018-11-05T16:21:11.455+0100 using 1 insert workers 2018-11-05T16:21:11.455+0100 filesize: 2132 bytes 2018-11-05T16:21:11.456+0100 using fields: 2018-11-05T16:21:11.456+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:21:11.460+0100 connected to: localhost 2018-11-05T16:21:11.460+0100 ns: test.location 2018-11-05T16:21:11.461+0100 connected to node type: replset 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.463+0100 got line: [{name location} {version 9} {columns [{id [{type int} {default <nil>} {null false}]} {ruid [{type string} {default } {null false}]} {username [{type string} {default } {null false}]} {domain [{type string} {default <nil>} {null true}]} {contact [{type string} {default } {null false}]} {received [{type string} {default <nil>} {null true}]} {path [{type string} {default <nil>} {null true}]} {expires [{type datetime} {default 2030-05-28 21:32:15} {null false}]} {q [{type double} {default 1} {null false}]} {callid [{type string} {default Default-Call-ID} {null false}]} {cseq [{type int} {default 1} {null false}]} {last_modified [{type datetime} {default 2000-01-01 00:00:01} {null false}]} {flags [{type int} {default 0} {null false}]} {cflags [{type int} {default 0} {null false}]} {user_agent [{type string} {default } {null false}]} {socket [{type string} {default <nil>} {null true}]} {methods [{type int} {default <nil>} {null true}]} {instance [{type string} {default <nil>} {null true}]} {reg_id [{type int} {default 0} {null false}]} {server_id [{type int} {default 0} {null false}]} {connection_id [{type int} {default 0} {null false}]} {keepalive [{type int} {default 0} {null false}]} {partition [{type int} {default 0} {null false}]}]}] 2018-11-05T16:21:11.464+0100 got extended line: bson.D{bson.DocElem{Name:"name", Value:"location"}, bson.DocElem{Name:"version", Value:9}, bson.DocElem{Name:"columns", Value:bson.D{bson.DocElem{Name:"id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"ruid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"username", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"domain", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"contact", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"received", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"path", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"expires", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2030-05-28 21:32:15"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"q", Value:bson.D{bson.DocElem{Name:"type", Value:"double"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"callid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:"Default-Call-ID"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cseq", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"last_modified", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2000-01-01 00:00:01"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"flags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cflags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"user_agent", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"socket", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"methods", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"instance", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"reg_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"server_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"connection_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"keepalive", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"partition", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}}}} 2018-11-05T16:21:11.603+0100 imported 1 document
[root@mongodb-1 root]# mongo --version MongoDB shell version v3.4.10 git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 allocator: tcmalloc modules: none build environment: distmod: rhel70 distarch: x86_64 target_arch: x86_64
пн, 5 нояб. 2018 г. в 16:55, Daniel-Constantin Mierla <miconda@gmail.com mailto:miconda@gmail.com>:
Hello, how was the record (json document) inserted in the location table? It doesn't seem to have valid values... Cheers, Daniel On 05.11.18 13:13, Denys Pozniak wrote:
Hello! I want to keep user location in mongodb, but Kamailio does not start well. Configuration: loadmodule "usrloc.so" loadmodule "db_mongodb.so" modparam("usrloc", "db_insert_null", 1) modparam("usrloc", "db_url", "mongodb://mongodb.test/kamailio") modparam("usrloc", "db_mode", 2) modparam("usrloc", "timer_interval", 30) modparam("usrloc", "desc_time_order", 1) Mongodb: rs0:PRIMARY> use kamailio switched to db kamailio rs0:PRIMARY> db.location.find() { "_id" : ObjectId("5be024d6b9d8febf4ae19681"), "name" : "location", "version" : 9, "columns" : { "id" : { "type" : "int", "default" : null, "null" : false }, "ruid" : { "type" : "string", "default" : "", "null" : false }, "username" : { "type" : "string", "default" : "", "null" : false }, "domain" : { "type" : "string", "default" : null, "null" : true }, "contact" : { "type" : "string", "default" : "", "null" : false }, "received" : { "type" : "string", "default" : null, "null" : true }, "path" : { "type" : "string", "default" : null, "null" : true }, "expires" : { "type" : "datetime", "default" : "2030-05-28 21:32:15", "null" : false }, "q" : { "type" : "double", "default" : 1, "null" : false }, "callid" : { "type" : "string", "default" : "Default-Call-ID", "null" : false }, "cseq" : { "type" : "int", "default" : 1, "null" : false }, "last_modified" : { "type" : "datetime", "default" : "2000-01-01 00:00:01", "null" : false }, "flags" : { "type" : "int", "default" : 0, "null" : false }, "cflags" : { "type" : "int", "default" : 0, "null" : false }, "user_agent" : { "type" : "string", "default" : "", "null" : false }, "socket" : { "type" : "string", "default" : null, "null" : true }, "methods" : { "type" : "int", "default" : null, "null" : true }, "instance" : { "type" : "string", "default" : null, "null" : true }, "reg_id" : { "type" : "int", "default" : 0, "null" : false }, "server_id" : { "type" : "int", "default" : 0, "null" : false }, "connection_id" : { "type" : "int", "default" : 0, "null" : false }, "keepalive" : { "type" : "int", "default" : 0, "null" : false }, "partition" : { "type" : "int", "default" : 0, "null" : false } } } { "_id" : ObjectId("5be02a77175610be86a1a589"), "username" : "dummy_user" } Syslog: Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns(): field [username] not found in result iterator Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:815]: db_mongodb_store_result(): failed to set the columns Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1018]: db_mongodb_query(): failed to store result Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1027]: db_mongodb_query(): failed to do the query Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [usrloc_mod.c:430]: child_init(): child(1): failed to preload domain 'location' Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/sr_module.c:946]: init_mod_child(): error while initializing module usrloc (/usr/lib64/kamailio/modules/usrloc.so) (idx: 1 rank: 1 desc: [udp receiver child=0 sock=10.10.10.10:5060 <http://10.10.10.10:5060>]) Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed for process 1, pid 21543, "udp receiver child=0 sock=10.10.10.10:5060 <http://10.10.10.10:5060>" Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: CRITICAL: <core> [main.c:1607]: main_loop(): Cannot fork 2018-11-05T13:07:19.117+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } 2018-11-05T13:07:19.118+0100 I COMMAND [conn367] command kamailio.version command: find { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:148 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.118+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } 2018-11-05T13:07:19.119+0100 I COMMAND [conn367] command kamailio.location command: find { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:155 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.178+0100 D COMMAND [conn368] run command kamailio.$cmd { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } 2018-11-05T13:07:19.179+0100 I COMMAND [conn368] command kamailio.location command: find { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:2 reslen:180 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms [root@dev-rtpengine kamailio]# kamailio -v version: kamailio 5.1.6 (x86_64/linux) 7d1964 flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 7d1964 compiled on 11:10:15 Nov 4 2018 with gcc 4.8.5 -- BR, Denys Pozniak _______________________________________________ Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org <mailto:sr-users@lists.kamailio.org> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com> www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference -- www.kamailioworld.com <http://www.kamailioworld.com> Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com <http://www.asipto.com>
--
BR, Denys Pozniak
Hello!
According to this tutorial ( https://www.kamailio.org/wiki/tutorials/kamailio-and-mongodb ) I need to create table version only, but looks like Kamailio expects location table also:
Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [db.c:450]: db_check_table_version(): invalid version 0 for table location found, expected 9 (check table structure and table "version") Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: usrloc [dlist.c:649]: register_udomain(): error during table version check. Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: registrar [registrar.c:651]: domain_fixup(): failed to register domain Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/route.c:1154]: fix_actions(): fixing failed (code=-1) at cfg:/etc/kamailio/routing.d/auth.cfg:53 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/rvalue.c:3860]: fix_rval_expr(): failure in cfg at line: 53 col: 44 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/rvalue.c:3860]: fix_rval_expr(): failure in cfg at line: 53 col: 44 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/route.c:1154]: fix_actions(): fixing failed (code=-1) at cfg:/etc/kamailio/routing.d/auth.cfg:55 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/route.c:1154]: fix_actions(): fixing failed (code=-1) at cfg:/etc/kamailio/routing.d/auth.cfg:86
пн, 5 нояб. 2018 г. в 19:16, Daniel-Constantin Mierla miconda@gmail.com:
Hello,
that file you get with wget is sort of schema definition, but doesn't have to be imported in mongo. Delete it, only Kamailio should insert into location table.
Cheers, Daniel
On 05.11.18 16:23, Denys Pozniak wrote:
My steps:
- wget
https://raw.githubusercontent.com/kamailio/kamailio/master/utils/kamctl/mong...
[root@mongodb-1 root]# mongoimport --db test --collection
location --file location.json -vvvv
2018-11-05T16:17:30.422+0100 using 1 decoding workers 2018-11-05T16:17:30.422+0100 using 1 insert workers 2018-11-05T16:17:30.423+0100 filesize: 2131 bytes 2018-11-05T16:17:30.423+0100 using fields: 2018-11-05T16:17:30.424+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:17:30.428+0100 connected to: localhost 2018-11-05T16:17:30.428+0100 ns: test.location 2018-11-05T16:17:30.428+0100 connected to node type: replset 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 Failed: error processing document #1: invalid character ':' after array element 2018-11-05T16:17:30.428+0100 imported 0 documents
- Tested with JSON validator and the same:
Results
Error: Parse error on line 5: ... "columns": [ "id": { "type": "int" ----------------------^
Expecting 'EOF', '}', ',', ']', got ':'
- Changed manually
"columns": [ --> "columns": { ] -- > }
[root@mongodb-1 root]# mongoimport --db test --collection
location --file location.json -vvvv
2018-11-05T16:21:11.454+0100 using 1 decoding workers 2018-11-05T16:21:11.455+0100 using 1 insert workers 2018-11-05T16:21:11.455+0100 filesize: 2132 bytes 2018-11-05T16:21:11.456+0100 using fields: 2018-11-05T16:21:11.456+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:21:11.460+0100 connected to: localhost 2018-11-05T16:21:11.460+0100 ns: test.location 2018-11-05T16:21:11.461+0100 connected to node type: replset 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.463+0100 got line: [{name location} {version 9} {columns [{id [{type int} {default <nil>} {null false}]} {ruid [{type string} {default } {null false}]} {username [{type string} {default } {null false}]} {domain [{type string} {default <nil>} {null true}]} {contact [{type string} {default } {null false}]} {received [{type string} {default <nil>} {null true}]} {path [{type string} {default <nil>} {null true}]} {expires [{type datetime} {default 2030-05-28 21:32:15} {null false}]} {q [{type double} {default 1} {null false}]} {callid [{type string} {default Default-Call-ID} {null false}]} {cseq [{type int} {default 1} {null false}]} {last_modified [{type datetime} {default 2000-01-01 00:00:01} {null false}]} {flags [{type int} {default 0} {null false}]} {cflags [{type int} {default 0} {null false}]} {user_agent [{type string} {default } {null false}]} {socket [{type string} {default <nil>} {null true}]} {methods [{type int} {default <nil>} {null true}]} {instance [{type string} {default <nil>} {null true}]} {reg_id [{type int} {default 0} {null false}]} {server_id [{type int} {default 0} {null false}]} {connection_id [{type int} {default 0} {null false}]} {keepalive [{type int} {default 0} {null false}]} {partition [{type int} {default 0} {null false}]}]}] 2018-11-05T16:21:11.464+0100 got extended line: bson.D{bson.DocElem{Name:"name", Value:"location"}, bson.DocElem{Name:"version", Value:9}, bson.DocElem{Name:"columns", Value:bson.D{bson.DocElem{Name:"id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"ruid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"username", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"domain", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"contact", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"received", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"path", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"expires", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2030-05-28 21:32:15"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"q", Value:bson.D{bson.DocElem{Name:"type", Value:"double"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"callid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:"Default-Call-ID"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cseq", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"last_modified", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2000-01-01 00:00:01"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"flags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cflags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"user_agent", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"socket", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"methods", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"instance", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"reg_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"server_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"connection_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"keepalive", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"partition", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}}}} 2018-11-05T16:21:11.603+0100 imported 1 document
[root@mongodb-1 root]# mongo --version MongoDB shell version v3.4.10 git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 allocator: tcmalloc modules: none build environment: distmod: rhel70 distarch: x86_64 target_arch: x86_64
пн, 5 нояб. 2018 г. в 16:55, Daniel-Constantin Mierla miconda@gmail.com:
Hello,
how was the record (json document) inserted in the location table? It doesn't seem to have valid values...
Cheers, Daniel
On 05.11.18 13:13, Denys Pozniak wrote:
Hello!
I want to keep user location in mongodb, but Kamailio does not start well.
Configuration:
loadmodule "usrloc.so" loadmodule "db_mongodb.so" modparam("usrloc", "db_insert_null", 1) modparam("usrloc", "db_url", "mongodb://mongodb.test/kamailio") modparam("usrloc", "db_mode", 2) modparam("usrloc", "timer_interval", 30) modparam("usrloc", "desc_time_order", 1)
Mongodb:
rs0:PRIMARY> use kamailio switched to db kamailio rs0:PRIMARY> db.location.find() { "_id" : ObjectId("5be024d6b9d8febf4ae19681"), "name" : "location", "version" : 9, "columns" : { "id" : { "type" : "int", "default" : null, "null" : false }, "ruid" : { "type" : "string", "default" : "", "null" : false }, "username" : { "type" : "string", "default" : "", "null" : false }, "domain" : { "type" : "string", "default" : null, "null" : true }, "contact" : { "type" : "string", "default" : "", "null" : false }, "received" : { "type" : "string", "default" : null, "null" : true }, "path" : { "type" : "string", "default" : null, "null" : true }, "expires" : { "type" : "datetime", "default" : "2030-05-28 21:32:15", "null" : false }, "q" : { "type" : "double", "default" : 1, "null" : false }, "callid" : { "type" : "string", "default" : "Default-Call-ID", "null" : false }, "cseq" : { "type" : "int", "default" : 1, "null" : false }, "last_modified" : { "type" : "datetime", "default" : "2000-01-01 00:00:01", "null" : false }, "flags" : { "type" : "int", "default" : 0, "null" : false }, "cflags" : { "type" : "int", "default" : 0, "null" : false }, "user_agent" : { "type" : "string", "default" : "", "null" : false }, "socket" : { "type" : "string", "default" : null, "null" : true }, "methods" : { "type" : "int", "default" : null, "null" : true }, "instance" : { "type" : "string", "default" : null, "null" : true }, "reg_id" : { "type" : "int", "default" : 0, "null" : false }, "server_id" : { "type" : "int", "default" : 0, "null" : false }, "connection_id" : { "type" : "int", "default" : 0, "null" : false }, "keepalive" : { "type" : "int", "default" : 0, "null" : false }, "partition" : { "type" : "int", "default" : 0, "null" : false } } } { "_id" : ObjectId("5be02a77175610be86a1a589"), "username" : "dummy_user" }
Syslog:
Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns(): field [username] not found in result iterator Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:815]: db_mongodb_store_result(): failed to set the columns Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1018]: db_mongodb_query(): failed to store result Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1027]: db_mongodb_query(): failed to do the query Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [usrloc_mod.c:430]: child_init(): child(1): failed to preload domain 'location' Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/sr_module.c:946]: init_mod_child(): error while initializing module usrloc (/usr/lib64/kamailio/modules/usrloc.so) (idx: 1 rank: 1 desc: [udp receiver child=0 sock=10.10.10.10:5060]) Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed for process 1, pid 21543, "udp receiver child=0 sock=10.10.10.10:5060" Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: CRITICAL: <core> [main.c:1607]: main_loop(): Cannot fork
2018-11-05T13:07:19.117+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } 2018-11-05T13:07:19.118+0100 I COMMAND [conn367] command kamailio.version command: find { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:148 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.118+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } 2018-11-05T13:07:19.119+0100 I COMMAND [conn367] command kamailio.location command: find { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:155 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.178+0100 D COMMAND [conn368] run command kamailio.$cmd { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } 2018-11-05T13:07:19.179+0100 I COMMAND [conn368] command kamailio.location command: find { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:2 reslen:180 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms
[root@dev-rtpengine kamailio]# kamailio -v version: kamailio 5.1.6 (x86_64/linux) 7d1964 flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 7d1964 compiled on 11:10:15 Nov 4 2018 with gcc 4.8.5
--
BR, Denys Pozniak
Kamailio (SER) - Users Mailing Listsr-users@lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com
--
BR, Denys Pozniak
-- Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com
Added also: rs0:PRIMARY> db.getCollection("version").insert({table_name: "domain", table_version: NumberInt(2) })
And now Kamailio works! Thanks!
вт, 6 нояб. 2018 г. в 11:57, Denys Pozniak denys.pozniak@gmail.com:
Hello!
According to this tutorial ( https://www.kamailio.org/wiki/tutorials/kamailio-and-mongodb ) I need to create table version only, but looks like Kamailio expects location table also:
Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [db.c:450]: db_check_table_version(): invalid version 0 for table location found, expected 9 (check table structure and table "version") Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: usrloc [dlist.c:649]: register_udomain(): error during table version check. Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: registrar [registrar.c:651]: domain_fixup(): failed to register domain Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/route.c:1154]: fix_actions(): fixing failed (code=-1) at cfg:/etc/kamailio/routing.d/auth.cfg:53 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/rvalue.c:3860]: fix_rval_expr(): failure in cfg at line: 53 col: 44 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/rvalue.c:3860]: fix_rval_expr(): failure in cfg at line: 53 col: 44 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/route.c:1154]: fix_actions(): fixing failed (code=-1) at cfg:/etc/kamailio/routing.d/auth.cfg:55 Nov 6 10:48:44 dev /usr/sbin/kamailio[2823]: ERROR: <core> [core/route.c:1154]: fix_actions(): fixing failed (code=-1) at cfg:/etc/kamailio/routing.d/auth.cfg:86
пн, 5 нояб. 2018 г. в 19:16, Daniel-Constantin Mierla miconda@gmail.com:
Hello,
that file you get with wget is sort of schema definition, but doesn't have to be imported in mongo. Delete it, only Kamailio should insert into location table.
Cheers, Daniel
On 05.11.18 16:23, Denys Pozniak wrote:
My steps:
- wget
https://raw.githubusercontent.com/kamailio/kamailio/master/utils/kamctl/mong...
[root@mongodb-1 root]# mongoimport --db test --collection
location --file location.json -vvvv
2018-11-05T16:17:30.422+0100 using 1 decoding workers 2018-11-05T16:17:30.422+0100 using 1 insert workers 2018-11-05T16:17:30.423+0100 filesize: 2131 bytes 2018-11-05T16:17:30.423+0100 using fields: 2018-11-05T16:17:30.424+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:17:30.428+0100 connected to: localhost 2018-11-05T16:17:30.428+0100 ns: test.location 2018-11-05T16:17:30.428+0100 connected to node type: replset 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:17:30.428+0100 Failed: error processing document #1: invalid character ':' after array element 2018-11-05T16:17:30.428+0100 imported 0 documents
- Tested with JSON validator and the same:
Results
Error: Parse error on line 5: ... "columns": [ "id": { "type": "int" ----------------------^
Expecting 'EOF', '}', ',', ']', got ':'
- Changed manually
"columns": [ --> "columns": { ] -- > }
[root@mongodb-1 root]# mongoimport --db test --collection
location --file location.json -vvvv
2018-11-05T16:21:11.454+0100 using 1 decoding workers 2018-11-05T16:21:11.455+0100 using 1 insert workers 2018-11-05T16:21:11.455+0100 filesize: 2132 bytes 2018-11-05T16:21:11.456+0100 using fields: 2018-11-05T16:21:11.456+0100 will listen for SIGTERM, SIGINT, and SIGKILL 2018-11-05T16:21:11.460+0100 connected to: localhost 2018-11-05T16:21:11.460+0100 ns: test.location 2018-11-05T16:21:11.461+0100 connected to node type: replset 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.461+0100 using write concern: w='majority', j=false, fsync=false, wtimeout=0 2018-11-05T16:21:11.463+0100 got line: [{name location} {version 9} {columns [{id [{type int} {default <nil>} {null false}]} {ruid [{type string} {default } {null false}]} {username [{type string} {default } {null false}]} {domain [{type string} {default <nil>} {null true}]} {contact [{type string} {default } {null false}]} {received [{type string} {default <nil>} {null true}]} {path [{type string} {default <nil>} {null true}]} {expires [{type datetime} {default 2030-05-28 21:32:15} {null false}]} {q [{type double} {default 1} {null false}]} {callid [{type string} {default Default-Call-ID} {null false}]} {cseq [{type int} {default 1} {null false}]} {last_modified [{type datetime} {default 2000-01-01 00:00:01} {null false}]} {flags [{type int} {default 0} {null false}]} {cflags [{type int} {default 0} {null false}]} {user_agent [{type string} {default } {null false}]} {socket [{type string} {default <nil>} {null true}]} {methods [{type int} {default <nil>} {null true}]} {instance [{type string} {default <nil>} {null true}]} {reg_id [{type int} {default 0} {null false}]} {server_id [{type int} {default 0} {null false}]} {connection_id [{type int} {default 0} {null false}]} {keepalive [{type int} {default 0} {null false}]} {partition [{type int} {default 0} {null false}]}]}] 2018-11-05T16:21:11.464+0100 got extended line: bson.D{bson.DocElem{Name:"name", Value:"location"}, bson.DocElem{Name:"version", Value:9}, bson.DocElem{Name:"columns", Value:bson.D{bson.DocElem{Name:"id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"ruid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"username", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"domain", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"contact", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"received", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"path", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"expires", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2030-05-28 21:32:15"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"q", Value:bson.D{bson.DocElem{Name:"type", Value:"double"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"callid", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:"Default-Call-ID"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cseq", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:1}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"last_modified", Value:bson.D{bson.DocElem{Name:"type", Value:"datetime"}, bson.DocElem{Name:"default", Value:"2000-01-01 00:00:01"}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"flags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"cflags", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"user_agent", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:""}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"socket", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"methods", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"instance", Value:bson.D{bson.DocElem{Name:"type", Value:"string"}, bson.DocElem{Name:"default", Value:interface {}(nil)}, bson.DocElem{Name:"null", Value:true}}}, bson.DocElem{Name:"reg_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"server_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"connection_id", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"keepalive", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}, bson.DocElem{Name:"partition", Value:bson.D{bson.DocElem{Name:"type", Value:"int"}, bson.DocElem{Name:"default", Value:0}, bson.DocElem{Name:"null", Value:false}}}}}} 2018-11-05T16:21:11.603+0100 imported 1 document
[root@mongodb-1 root]# mongo --version MongoDB shell version v3.4.10 git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 allocator: tcmalloc modules: none build environment: distmod: rhel70 distarch: x86_64 target_arch: x86_64
пн, 5 нояб. 2018 г. в 16:55, Daniel-Constantin Mierla <miconda@gmail.com
:
Hello,
how was the record (json document) inserted in the location table? It doesn't seem to have valid values...
Cheers, Daniel
On 05.11.18 13:13, Denys Pozniak wrote:
Hello!
I want to keep user location in mongodb, but Kamailio does not start well.
Configuration:
loadmodule "usrloc.so" loadmodule "db_mongodb.so" modparam("usrloc", "db_insert_null", 1) modparam("usrloc", "db_url", "mongodb://mongodb.test/kamailio") modparam("usrloc", "db_mode", 2) modparam("usrloc", "timer_interval", 30) modparam("usrloc", "desc_time_order", 1)
Mongodb:
rs0:PRIMARY> use kamailio switched to db kamailio rs0:PRIMARY> db.location.find() { "_id" : ObjectId("5be024d6b9d8febf4ae19681"), "name" : "location", "version" : 9, "columns" : { "id" : { "type" : "int", "default" : null, "null" : false }, "ruid" : { "type" : "string", "default" : "", "null" : false }, "username" : { "type" : "string", "default" : "", "null" : false }, "domain" : { "type" : "string", "default" : null, "null" : true }, "contact" : { "type" : "string", "default" : "", "null" : false }, "received" : { "type" : "string", "default" : null, "null" : true }, "path" : { "type" : "string", "default" : null, "null" : true }, "expires" : { "type" : "datetime", "default" : "2030-05-28 21:32:15", "null" : false }, "q" : { "type" : "double", "default" : 1, "null" : false }, "callid" : { "type" : "string", "default" : "Default-Call-ID", "null" : false }, "cseq" : { "type" : "int", "default" : 1, "null" : false }, "last_modified" : { "type" : "datetime", "default" : "2000-01-01 00:00:01", "null" : false }, "flags" : { "type" : "int", "default" : 0, "null" : false }, "cflags" : { "type" : "int", "default" : 0, "null" : false }, "user_agent" : { "type" : "string", "default" : "", "null" : false }, "socket" : { "type" : "string", "default" : null, "null" : true }, "methods" : { "type" : "int", "default" : null, "null" : true }, "instance" : { "type" : "string", "default" : null, "null" : true }, "reg_id" : { "type" : "int", "default" : 0, "null" : false }, "server_id" : { "type" : "int", "default" : 0, "null" : false }, "connection_id" : { "type" : "int", "default" : 0, "null" : false }, "keepalive" : { "type" : "int", "default" : 0, "null" : false }, "partition" : { "type" : "int", "default" : 0, "null" : false } } } { "_id" : ObjectId("5be02a77175610be86a1a589"), "username" : "dummy_user" }
Syslog:
Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:416]: db_mongodb_get_columns(): field [username] not found in result iterator Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:815]: db_mongodb_store_result(): failed to set the columns Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1018]: db_mongodb_query(): failed to store result Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: db_mongodb [mongodb_dbase.c:1027]: db_mongodb_query(): failed to do the query Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: usrloc [usrloc_mod.c:430]: child_init(): child(1): failed to preload domain 'location' Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/sr_module.c:946]: init_mod_child(): error while initializing module usrloc (/usr/lib64/kamailio/modules/usrloc.so) (idx: 1 rank: 1 desc: [udp receiver child=0 sock=10.10.10.10:5060]) Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed for process 1, pid 21543, "udp receiver child=0 sock=10.10.10.10:5060" Nov 5 12:51:01 dev-rtpengine /usr/sbin/kamailio[21543]: CRITICAL: <core> [main.c:1607]: main_loop(): Cannot fork
2018-11-05T13:07:19.117+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } 2018-11-05T13:07:19.118+0100 I COMMAND [conn367] command kamailio.version command: find { find: "version", filter: { table_name: "location" }, projection: { table_version: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:148 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.118+0100 D COMMAND [conn367] run command kamailio.$cmd { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } 2018-11-05T13:07:19.119+0100 I COMMAND [conn367] command kamailio.location command: find { find: "location", filter: { username: "dummy_user" }, projection: { username: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:1 reslen:155 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms 2018-11-05T13:07:19.178+0100 D COMMAND [conn368] run command kamailio.$cmd { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } 2018-11-05T13:07:19.179+0100 I COMMAND [conn368] command kamailio.location command: find { find: "location", filter: {}, projection: { username: 1, contact: 1, expires: 1, q: 1, callid: 1, cseq: 1, flags: 1, cflags: 1, user_agent: 1, received: 1, path: 1, socket: 1, methods: 1, last_modified: 1, ruid: 1, instance: 1, reg_id: 1, server_id: 1, connection_id: 1, keepalive: 1 } } planSummary: COLLSCAN keysExamined:0 docsExamined:2 cursorExhausted:1 numYields:0 nreturned:2 reslen:180 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } protocol:op_query 0ms
[root@dev-rtpengine kamailio]# kamailio -v version: kamailio 5.1.6 (x86_64/linux) 7d1964 flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 7d1964 compiled on 11:10:15 Nov 4 2018 with gcc 4.8.5
--
BR, Denys Pozniak
Kamailio (SER) - Users Mailing Listsr-users@lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com
--
BR, Denys Pozniak
-- Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com
--
BR, Denys Pozniak