) 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(a)gmail.com>om>:
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:
1) wget
https://raw.githubusercontent.com/kamailio/kamailio/master/utils/kamctl/mon…
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(a)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