diff --git a/CMakeLists.txt b/CMakeLists.txt
index aac8c5f04426ca81f1fac40998d1037ab873d5dd..3d1a9555e59e8c781a2ea134b60473007c8ba3f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
 cmake_minimum_required(VERSION 3.0)
 
 set(CMAKE_C_STANDARD 11)
-set(CELLFRAME_SDK_NATIVE_VERSION "2.9-49")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.9-50")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 set(DAPSDK_MODULES "")
 message("Cellframe modules: ${CELLFRAME_MODULES}")
diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
index 0f669463b7dd1d43f2f6036f34b0e53b3392b6ea..59dd701d623573d569cc02b69ed6f14c95cdc517 100644
--- a/dap-sdk/net/core/dap_events_socket.c
+++ b/dap-sdk/net/core/dap_events_socket.c
@@ -1520,7 +1520,7 @@ void dap_events_socket_worker_poll_update_unsafe(dap_events_socket_t * a_esocket
             }
         }
     #elif defined (DAP_EVENTS_CAPS_POLL)
-        if( a_esocket->worker){
+        if( a_esocket->worker && a_esocket->is_initalized){
             if (a_esocket->poll_index < a_esocket->worker->poll_count ){
                 struct pollfd * l_poll = &a_esocket->worker->poll[a_esocket->poll_index];
                 l_poll->events = a_esocket->poll_base_flags | POLLERR ;
@@ -1709,7 +1709,7 @@ void dap_events_socket_set_writable_unsafe( dap_events_socket_t *a_esocket, bool
     }else
         log_it(L_WARNING,"Trying to set readable/writable event, queue or timer thats you shouldnt do");
 #else
-    if( a_esocket->worker )
+    if( a_esocket->worker)
         dap_events_socket_worker_poll_update_unsafe(a_esocket);
     else if( a_esocket->proc_thread)
         dap_proc_thread_esocket_update_poll_flags(a_esocket->proc_thread,a_esocket );
diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c
index 9d706da25f9151b2e1d2a34499a12043e4d96133..4320297355e5d9871176e03a54f6d01594d7d950 100644
--- a/dap-sdk/net/core/dap_worker.c
+++ b/dap-sdk/net/core/dap_worker.c
@@ -1102,7 +1102,7 @@ static bool s_socket_all_check_activity( void * a_arg)
     pthread_rwlock_rdlock(&l_worker->esocket_rwlock);
     HASH_ITER(hh_worker, l_worker->esockets, l_es, tmp ) {
         pthread_rwlock_unlock(&l_worker->esocket_rwlock);
-        if ( l_es->type == DESCRIPTOR_TYPE_SOCKET_CLIENT  || l_es->type == DESCRIPTOR_TYPE_SOCKET_UDP ){
+        if (l_es->type == DESCRIPTOR_TYPE_SOCKET_CLIENT){
             if ( !(l_es->flags & DAP_SOCK_SIGNAL_CLOSE) &&
                  (  l_curtime >=  (l_es->last_time_active + s_connection_timeout) ) && !l_es->no_close ) {
                 log_it( L_INFO, "Socket %u timeout (diff %u ), closing...", l_es->socket, l_curtime -  (time_t)l_es->last_time_active - s_connection_timeout );
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 03a5b5ae660e7ed7898e32a9a6446eb1e8986566..3db15516cfd0618fd36ff0cb48b729535fe12ed8 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -338,7 +338,8 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t
     pthread_rwlock_unlock(&PVT(a_ledger)->tokens_rwlock);
 
     if (l_token_item) {
-        log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker);
+        if(s_debug_more)
+            log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker);
         return -3;
     }
 
diff --git a/modules/global-db/dap_chain_global_db_driver_mdbx.c b/modules/global-db/dap_chain_global_db_driver_mdbx.c
index 91151f0b2cb3ad35243ce8275fbe8cd1819f908f..ad31e9f059fc39cc2c972a9f374c7b684de29117 100644
--- a/modules/global-db/dap_chain_global_db_driver_mdbx.c
+++ b/modules/global-db/dap_chain_global_db_driver_mdbx.c
@@ -36,6 +36,8 @@
 
 #include "dap_chain_global_db_driver_mdbx.h"
 
+#ifdef DAP_CHAIN_GDB_ENGINE_MDBX
+
 #define LOG_TAG "dap_chain_global_db_mdbx"
 
 static char *s_cdb_path = NULL;
@@ -203,3 +205,4 @@ static int s_driver_callback_apply_store_obj(pdap_store_obj_t a_store_obj)
     return ret;
 }
 
+#endif
diff --git a/modules/global-db/dap_chain_global_db_driver_pgsql.c b/modules/global-db/dap_chain_global_db_driver_pgsql.c
index e5297dbfa8b747af6d6b007e7186e8bfe7cc60f7..cf692542c7220a3e6d322c8c6c5519edaefcea61 100644
--- a/modules/global-db/dap_chain_global_db_driver_pgsql.c
+++ b/modules/global-db/dap_chain_global_db_driver_pgsql.c
@@ -27,7 +27,6 @@
 #include <string.h>
 #include <pthread.h>
 #include <errno.h>
-#include <pwd.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <sys/stat.h>
@@ -39,9 +38,11 @@
 #include "dap_file_utils.h"
 #include "dap_chain_global_db_driver_pgsql.h"
 
+#ifdef DAP_CHAIN_GDB_ENGINE_PGSQL
+#include <pwd.h>
+
 #define LOG_TAG "db_pgsql"
 
-#ifdef DAP_CHAIN_GDB_ENGINE_PGSQL
 struct dap_pgsql_conn_pool_item {
     PGconn *conn;
     int busy;
@@ -223,7 +224,7 @@ int dap_db_driver_pgsql_start_transaction(void)
  */
 int dap_db_driver_pgsql_end_transaction(void)
 {
-    if (s_trans_conn)
+    if (!s_trans_conn)
         return -1;
     PGresult *l_res = PQexec(s_trans_conn, "COMMIT");
     if (PQresultStatus(l_res) != PGRES_COMMAND_OK) {
@@ -292,6 +293,11 @@ int dap_db_driver_pgsql_apply_store_obj(dap_store_obj_t *a_store_obj)
         DAP_DELETE(a_store_obj->value);
         DAP_DELETE(a_store_obj->key);
         if (PQresultStatus(l_res) != PGRES_COMMAND_OK) {
+            if (s_trans_conn) { //we shouldn't fail within a transaacion
+                dap_db_driver_pgsql_end_transaction();
+                dap_db_driver_pgsql_start_transaction();
+                l_conn = s_pgsql_get_connection();
+            }
             if (s_pgsql_create_group_table(a_store_obj->group, l_conn) == 0) {
                 PQclear(l_res);
                 l_res = PQexecParams(l_conn, l_query_str, 2, NULL, l_param_vals, l_param_lens, l_param_formats, 0);
@@ -313,7 +319,8 @@ int dap_db_driver_pgsql_apply_store_obj(dap_store_obj_t *a_store_obj)
         // execute delete request
         l_res = PQexec(l_conn, l_query_str);
         if (PQresultStatus(l_res) != PGRES_COMMAND_OK) {
-            if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) {
+            const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE);
+            if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) {
                 log_it(L_ERROR, "Delete object failed with message: \"%s\"", PQresultErrorMessage(l_res));
                 l_ret = -4;
             }
@@ -378,7 +385,8 @@ dap_store_obj_t *dap_db_driver_pgsql_read_store_obj(const char *a_group, const c
     PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1);
     DAP_DELETE(l_query_str);
     if (PQresultStatus(l_res) != PGRES_TUPLES_OK) {
-        if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE))
+        const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE);
+        if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE))
             log_it(L_ERROR, "Read objects failed with message: \"%s\"", PQresultErrorMessage(l_res));
         PQclear(l_res);
         s_pgsql_free_connection(l_conn);
@@ -418,7 +426,8 @@ dap_store_obj_t *dap_db_driver_pgsql_read_last_store_obj(const char *a_group)
     PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1);
     DAP_DELETE(l_query_str);
     if (PQresultStatus(l_res) != PGRES_TUPLES_OK) {
-        if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE))
+        const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE);
+        if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE))
             log_it(L_ERROR, "Read last object failed with message: \"%s\"", PQresultErrorMessage(l_res));
         PQclear(l_res);
         s_pgsql_free_connection(l_conn);
@@ -461,7 +470,8 @@ dap_store_obj_t *dap_db_driver_pgsql_read_cond_store_obj(const char *a_group, ui
     PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1);
     DAP_DELETE(l_query_str);
     if (PQresultStatus(l_res) != PGRES_TUPLES_OK) {
-        if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE))
+        const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE);
+        if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE))
             log_it(L_ERROR, "Conditional read objects failed with message: \"%s\"", PQresultErrorMessage(l_res));
         PQclear(l_res);
         s_pgsql_free_connection(l_conn);
@@ -528,7 +538,8 @@ size_t dap_db_driver_pgsql_read_count_store(const char *a_group, uint64_t a_id)
     PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1);
     DAP_DELETE(l_query_str);
     if (PQresultStatus(l_res) != PGRES_TUPLES_OK) {
-        if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE))
+        const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE);
+        if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE))
             log_it(L_ERROR, "Count objects failed with message: \"%s\"", PQresultErrorMessage(l_res));
         PQclear(l_res);
         s_pgsql_free_connection(l_conn);
@@ -553,7 +564,8 @@ bool dap_db_driver_pgsql_is_obj(const char *a_group, const char *a_key)
     PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1);
     DAP_DELETE(l_query_str);
     if (PQresultStatus(l_res) != PGRES_TUPLES_OK) {
-        if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE))
+        const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE);
+        if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE))
             log_it(L_ERROR, "Existance check of object failed with message: \"%s\"", PQresultErrorMessage(l_res));
         PQclear(l_res);
         s_pgsql_free_connection(l_conn);
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 5cca4191f17e4e981847683065d2626ed67b4d5b..3c9cb9e875601a5f08362e93c40a163b1a0d313e 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -4328,7 +4328,7 @@ int cmd_gdb_import(int argc, char ** argv, void *arg_func, char ** a_str_reply)
         if (dap_chain_global_db_driver_appy(l_group_store, l_records_count)) {
             log_it(L_CRITICAL, "An error occured on importing group %s...", l_group_name);
         }
-        dap_store_obj_free(l_group_store, l_records_count);
+        //dap_store_obj_free(l_group_store, l_records_count);
     }
     json_object_put(l_json);
     return 0;