[sr-dev] db_cassandra help required [possible bug?]

SamyGo govoiper at gmail.com
Thu May 12 19:52:51 CEST 2016


Hi devs,

I'm trying to make the db_cassandra work for my kamailio specifically
userblacklist module.

I've cassanda keyspace and tables defined along with the db_schema
directory structure defined as instructed however the debug logs keep
telling me that table 'version' doesn't exist.

I've taken a look inside the dbcassa_table.c file
https://github.com/kamailio/kamailio/blob/master/modules/db_cassandra/dbcassa_table.c#L441

Somewhere in this function it just doesn't get hold of "tbc" and hence it
throws up error.

Here is how I've figured out this code.


        hash = core_hash(dbn, tbn, DBCASSA_TABLE_SIZE);
        if(!hash)
                LM_ERR("hash  NOT FOUND\n");
        hashidx = hash % DBCASSA_TABLE_SIZE;
        if(!hashidx)
                LM_ERR("hashidx NOT FOUND\n");
        ref_read_data(dbcassa_tbl_htable[hashidx].lock);

        tbc = dbcassa_tbl_htable[hashidx].dtp;
        if(!tbc)
                LM_ERR("TBC NOT FOUND\n");
        while(tbc) {
                LM_DBG("found dbname=%.*s, table=%.*s\n", tbc->dbname.len,
tbc->dbname.s, tbc->name.len, tbc->name.s);
                if(tbc->hash==hash && tbc->dbname.len == dbn->len
                                && tbc->name.len == tbn->len
                                && !strncasecmp(tbc->dbname.s, dbn->s,
dbn->len)
                                && !strncasecmp(tbc->name.s, tbn->s,
tbn->len)) {

                        memcpy(full_path_buf + dbcassa_schema_path.len,
dbn->s, dbn->len);
                        len = dbcassa_schema_path.len + dbn->len;
                        full_path_buf[len++] = '/';
                        memcpy(full_path_buf + len, tbn->s, tbn->len);
                        full_path_buf[len + tbn->len] = '\0';

                        if(dbcassa_check_mtime(&tbc->mt) == 0)
                                return tbc;
                        old_tbc = tbc;
                        break;
                }
                tbc = tbc->next;
        }
        unref_read_data(dbcassa_tbl_htable[hashidx].lock);
        if(!old_tbc) {
                LM_ERR("OLD_TBC NOT FOUND\n");
                return NULL;
        }


and upon starting of kamailio after recompiling the module I see these
lines printed.

 0(15574) DEBUG: db_cassandra [dbcassa_base.cpp:149]:
db_cassa_new_connection(): opening connection: cassa://
xxxx:xxxx at 127.0.0.1:9160/kamailio
 0(15574) DEBUG: <core> [mem/f_malloc.c:439]: fm_malloc():
fm_malloc(0x7f9c14f8a010, 48) called from db_cassandra: dbcassa_base.cpp:
db_cassa_new_connection(155)
 0(15574) DEBUG: <core> [mem/f_malloc.c:514]: fm_malloc():
fm_malloc(0x7f9c14f8a010, 48) returns address 0x7f9c150055f0
 0(15574) DEBUG: db_cassandra [dbcassa_base.cpp:161]:
db_cassa_new_connection(): 0x7f9c150055f0=pkg_malloc(48)
 0(15574) DEBUG: db_cassandra [dbcassa_base.cpp:117]: dbcassa_open():
Opened connection to Cassandra cluster  127.0.0.1:9160
 0(15574) DEBUG: db_cassandra [dbcassa_base.cpp:955]: db_cassa_query():
query table=version
 0(15574) ERROR: db_cassandra [dbcassa_table.c:463]:
dbcassa_db_get_table(): TBC NOT FOUND
 0(15574) ERROR: db_cassandra [dbcassa_table.c:486]:
dbcassa_db_get_table(): OLD_TBC NOT FOUND
 0(15574) ERROR: db_cassandra [dbcassa_base.cpp:449]:
cassa_translate_query(): table version does not exist!
 0(15574) ERROR: db_cassandra [dbcassa_base.cpp:962]: db_cassa_query():
Failed to query Cassandra cluster
 0(15574) ERROR: <core> [db.c:397]: db_table_version(): error in db_query
 0(15574) ERROR: <core> [db.c:436]: db_check_table_version(): querying
version for table userblacklist
 0(15574) ERROR: userblacklist [db_userblacklist.c:86]:
userblacklist_db_init(): during table version check.
 0(15574) DEBUG: <core> [db_pool.c:100]: pool_remove(): removing connection
from the pool
 0(15574) DEBUG: <core> [mem/f_malloc.c:575]: fm_free():
fm_free(0x7f9c14f8a010, 0x7f9c150055f0), called from db_cassandra:
dbcassa_base.cpp: db_cassa_free_connection(203)
 0(15574) DEBUG: <core> [mem/f_malloc.c:594]: fm_free(): fm_free: freeing
block alloc'ed from db_cassandra: dbcassa_base.cpp:
db_cassa_new_connection(155)
 0(15574) DEBUG: <core> [mem/f_malloc.c:575]: fm_free():
fm_free(0x7f9c14f8a010, 0x7f9c15005318), called from core: db.c:
db_do_close(356)
 0(15574) DEBUG: <core> [mem/f_malloc.c:594]: fm_free(): fm_free: freeing
block alloc'ed from core: db.c: db_do_init2(298)
 0(15574) ERROR: <core> [sr_module.c:968]: init_mod(): Error while
initializing module userblacklist
(/usr/local/lib64/kamailio/modules/userblacklist.so)
ERROR: error while initializing modules



Kindly look into this and let me know how to make this work.


Thanks,
Sammy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20160512/90927e92/attachment.html>


More information about the sr-dev mailing list