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@127.0.0.1:9160/kamailio
0(15574) DEBUG: [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: [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: [db.c:397]: db_table_version(): error in db_query
0(15574) ERROR: [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: [db_pool.c:100]: pool_remove(): removing connection from the pool
0(15574) DEBUG: [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: [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: [mem/f_malloc.c:575]: fm_free(): fm_free(0x7f9c14f8a010, 0x7f9c15005318), called from core: db.c: db_do_close(356)
0(15574) DEBUG: [mem/f_malloc.c:594]: fm_free(): fm_free: freeing block alloc'ed from core: db.c: db_do_init2(298)
0(15574) ERROR: [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


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub