From 9ba9a5b41a0362a01984ce2f6cfde39b687f65a7 Mon Sep 17 00:00:00 2001
From: Dmitry Gerasimov <dmitriy.gerasimov@demlabs.net>
Date: Fri, 17 Jun 2022 18:43:27 +0700
Subject: [PATCH] [!] Another stage of refactoring

---
 modules/chain/dap_chain_ledger.c              |  10 +-
 .../block-ton/dap_chain_cs_block_ton.c        |   8 +-
 .../consensus/dag-poa/dap_chain_cs_dag_poa.c  |   2 +-
 modules/consensus/none/dap_chain_cs_none.c    |   2 +-
 modules/global-db/dap_chain_global_db.c       | 181 ------------------
 modules/global-db/dap_global_db.c             |  83 +++++++-
 .../global-db/include/dap_chain_global_db.h   |   2 +-
 modules/global-db/include/dap_global_db.h     |   3 +
 modules/net/dap_chain_net.c                   |   8 +-
 modules/net/dap_chain_node.c                  |   2 +-
 modules/net/dap_chain_node_cli_cmd.c          |  10 +-
 modules/net/dap_chain_node_dns_server.c       |   2 +-
 modules/net/srv/dap_chain_net_srv_order.c     |   2 +-
 .../service/stake/dap_chain_net_srv_stake.c   |   2 +-
 .../xchange/dap_chain_net_srv_xchange.c       |   4 +-
 modules/type/blocks/dap_chain_block_chunk.c   |   2 +-
 modules/type/blocks/dap_chain_cs_blocks.c     |   2 +-
 modules/type/dag/dap_chain_cs_dag.c           |   8 +-
 18 files changed, 110 insertions(+), 223 deletions(-)
 delete mode 100644 modules/global-db/dap_chain_global_db.c

diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 428123d4de..18e5790068 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -1210,7 +1210,7 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger)
         }
         memcpy(&l_token_item->current_supply, l_objs[i].value, sizeof(uint256_t));
     }
-    dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+    dap_global_db_objs_delete(l_objs, l_objs_count);
     DAP_DELETE(l_gdb_group);
 
     l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_EMISSIONS_STR);
@@ -1236,7 +1236,7 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger)
         HASH_ADD(hh, l_token_item->token_emissions, datum_token_emission_hash,
                  sizeof(dap_chain_hash_fast_t), l_emission_item);
     }
-    dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+    dap_global_db_objs_delete(l_objs, l_objs_count);
     DAP_DELETE(l_gdb_group);
 
     l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_TXS_STR);
@@ -1250,7 +1250,7 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger)
         memcpy(&l_tx_item->cache_data, l_objs[i].value, sizeof(l_tx_item->cache_data));
         HASH_ADD(hh, l_ledger_pvt->ledger_items, tx_hash_fast, sizeof(dap_chain_hash_fast_t), l_tx_item);
     }
-    dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+    dap_global_db_objs_delete(l_objs, l_objs_count);
     DAP_DELETE(l_gdb_group);
 
     l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_SPENT_TXS_STR);
@@ -1263,7 +1263,7 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger)
                 min(l_objs[i].value_len, DAP_CHAIN_TICKER_SIZE_MAX - 1));
         HASH_ADD(hh, l_ledger_pvt->spent_items, tx_hash_fast, sizeof(dap_chain_hash_fast_t), l_tx_spent_item);
     }
-    dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+    dap_global_db_objs_delete(l_objs, l_objs_count);
     DAP_DELETE(l_gdb_group);
 
     l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_BALANCES_STR);
@@ -1285,7 +1285,7 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger)
         dap_notify_server_send_mt(json_object_get_string(l_json));
         json_object_put(l_json);*/ // TODO: unstable and spammy
     }
-    dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+    dap_global_db_objs_delete(l_objs, l_objs_count);
     DAP_DELETE(l_gdb_group);
 }
 
diff --git a/modules/consensus/block-ton/dap_chain_cs_block_ton.c b/modules/consensus/block-ton/dap_chain_cs_block_ton.c
index 47e910b967..5fe97cd427 100644
--- a/modules/consensus/block-ton/dap_chain_cs_block_ton.c
+++ b/modules/consensus/block-ton/dap_chain_cs_block_ton.c
@@ -396,7 +396,7 @@ static void s_session_round_start(dap_chain_cs_block_ton_items_t *a_session) {
         	s_session_candidate_to_chain(a_session, &l_store_candidate_ready->hdr.candidate_hash, 
         					(dap_chain_block_t*)l_store_candidate_ready->candidate_n_signs, l_store_candidate_ready->hdr.candidate_size);
         }
-        dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+        dap_global_db_objs_delete(l_objs, l_objs_size);
     }
 }
 
@@ -602,7 +602,7 @@ static bool s_session_timer() {
 		                       		l_list_candidate = dap_list_append(l_list_candidate, l_hash);
 		                       	}
 		                    }
-		                    dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+		                    dap_global_db_objs_delete(l_objs, l_objs_size);
 		                }
 		                size_t l_list_candidate_size = (size_t)dap_list_length(l_list_candidate);
 						dap_chain_cs_block_ton_message_votefor_t *l_votefor =
@@ -908,7 +908,7 @@ static bool s_session_round_finish(dap_chain_cs_block_ton_items_t *a_session) {
         // 	s_session_candidate_to_chain(a_session, &l_store_candidate_ready->hdr.candidate_hash, 
         // 					(dap_chain_block_t*)l_store_candidate_ready->candidate_n_signs, l_store_candidate_ready->hdr.candidate_size);
         // }
-        dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+        dap_global_db_objs_delete(l_objs, l_objs_size);
     }
 
     dap_chain_cs_block_ton_message_item_t *l_message_item=NULL, *l_message_tmp=NULL;
@@ -1696,7 +1696,7 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
 					}
 					DAP_DELETE(l_vote);
                 }
-                dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+                dap_global_db_objs_delete(l_objs, l_objs_size);
             }
             pthread_rwlock_unlock(&l_session->rwlock);
 		} break;
diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
index 341a78e519..0cea83b304 100644
--- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
+++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
@@ -423,7 +423,7 @@ static bool s_poa_round_check(dap_chain_t *a_chain) {
                 l_events_count++;
             }
         }
-        dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+        dap_global_db_objs_delete(l_objs, l_objs_size);
     }
 
     if (!l_events_count) {
diff --git a/modules/consensus/none/dap_chain_cs_none.c b/modules/consensus/none/dap_chain_cs_none.c
index 6d791fb3e4..df99abaca6 100644
--- a/modules/consensus/none/dap_chain_cs_none.c
+++ b/modules/consensus/none/dap_chain_cs_none.c
@@ -285,7 +285,7 @@ int dap_chain_gdb_ledger_load(char *a_gdb_group, dap_chain_t *a_chain)
     for(size_t i = 0; i < l_data_size; i++) {
         s_chain_callback_atom_add(a_chain, data[i].value, data[i].value_len);
     }
-    dap_chain_global_db_objs_delete(data, l_data_size);
+    dap_global_db_objs_delete(data, l_data_size);
     PVT(DAP_CHAIN_GDB(a_chain))->is_load_mode = false;
     return 0;
 }
diff --git a/modules/global-db/dap_chain_global_db.c b/modules/global-db/dap_chain_global_db.c
deleted file mode 100644
index aa0b94f034..0000000000
--- a/modules/global-db/dap_chain_global_db.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Authors:
- * Alexander Lysikov <alexander.lysikov@demlabs.net>
- * DeM Labs Inc.   https://demlabs.net
- * Kelvin Project https://github.com/kelvinblockchain
-* Copyright  (c) 2019-2020
- * All rights reserved.
-
- This file is part of DAP (Deus Applications Prototypes) the open source project
-
- DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- DAP is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <pthread.h>
-#include <errno.h>
-#include <assert.h>
-#include "dap_chain_global_db.h"
-#include "uthash.h"
-#include "dap_strfuncs.h"
-#include "dap_file_utils.h"
-#include "dap_chain_common.h"
-#include "dap_global_db_sync.h"
-#include "dap_time.h"
-
-#ifdef WIN32
-#include "registry.h"
-#include <string.h>
-#endif
-
-#ifndef MAX_PATH
-#define MAX_PATH 120
-#endif
-
-#define LOG_TAG "dap_global_db"
-
-
-
-static int s_track_history = 0;
-
-int     s_db_drvmode_async ,                                                /* Set a kind of processing requests to DB:                                                                            <> 0 - Async mode should be used */
-        s_dap_global_db_debug_more;                                         /* Enable extensible debug output */
-
-
-
-/**
- * @brief Deallocates memory of an objs array.
- * @param objs a pointer to the first object of the array
- * @param a_count a number of objects in the array
- * @return (none)
- */
-void dap_chain_global_db_objs_delete(dap_global_db_obj_t *a_objs, size_t a_count)
-{
-dap_global_db_obj_t *l_obj;
-
-    if ( !a_objs || !a_count )                                              /* Sanity checks */
-        return;
-
-    for(l_obj = a_objs; a_count--; l_obj++)                                 /* Run over array's elements */
-    {
-        DAP_DELETE(l_obj->key);
-        DAP_DELETE(l_obj->value);
-    }
-
-    DAP_DELETE(a_objs);                                                     /* Finaly kill the the array */
-}
-
-
-static inline  void s_clear_sync_grp(void *a_elm)
-{
-    dap_sync_group_item_t *l_item = (dap_sync_group_item_t *)a_elm;
-    DAP_DELETE(l_item->group_mask);
-    DAP_DELETE(l_item);
-}
-
-/**
- * @brief Deinitialize a database.
- * @note You should call this function at the end.
- * @return (none)
- */
-void dap_chain_global_db_deinit(void)
-{
-    dap_db_driver_deinit();
-}
-
-/**
- * @brief Flushes a database cahce to disk.
- * @return 0
- */
-int dap_chain_global_db_flush(void)
-{
-    return  dap_db_driver_flush();
-}
-
-/**
- * @brief Gets an object from a database by a_key and a_group arguments.
- * @param a_key an object key string
- * @param a_group a group name string
- * @return If successful, returns a pointer to the item, otherwise NULL.
- */
-dap_store_obj_t *dap_chain_global_db_obj_get(const char *a_key, const char *a_group)
-{
-    size_t l_count = 1;
-    // read one item
-    dap_store_obj_t *l_store_data = dap_chain_global_db_driver_read(a_group, a_key, &l_count);
-    return l_store_data;
-}
-
-/**
- * @brief Gets an array consisting of a_data_len_out objects from a database by a_key and a_group arguments.
- * @param a_key an object key string
- * @param a_data_len_out[in] a number of objects to be gotten, if NULL - no limits
- * @param a_data_len_out[out] a number of objects that were gotten
- * @param a_group a group name string
- * @return If successful, returns a pointer to the first item in the array; otherwise NULL.
- */
-dap_store_obj_t* dap_chain_global_db_obj_gr_get(const char *a_key, size_t *a_data_len_out, const char *a_group)
-{
-    // read several items, 0 - no limits
-    size_t l_data_len_out = 0;
-    if(a_data_len_out)
-        l_data_len_out = *a_data_len_out;
-    dap_store_obj_t *l_store_data = dap_chain_global_db_driver_read(a_group, a_key, &l_data_len_out);
-    if(l_store_data) {
-        if(a_data_len_out)
-            *a_data_len_out = l_data_len_out;
-    }
-    return l_store_data;
-}
-
-
-/**
- * @brief Gets time stamp of the deleted object by a_group and a_key arguments.
- * @param a_group a group name sring, for example "kelvin-testnet.nodes"
- * @param a_key an object key string, looked like "0x8FAFBD00B..."
- * @return If successful, a time stamp, otherwise 0.
- */
-uint64_t global_db_gr_del_get_timestamp(const char *a_group, const char *a_key)
-{
-uint64_t l_timestamp = 0;
-dap_store_obj_t store_data = { 0 };
-char l_group[DAP_GLOBAL_DB_GROUP_NAME_SIZE_MAX];
-size_t l_count_out = 0;
-dap_store_obj_t *l_obj;
-
-    if(!a_key)
-        return l_timestamp;
-
-    store_data.key = a_key;
-    dap_snprintf(l_group, sizeof(l_group) - 1,  "%s.del", a_group);
-    store_data.group = l_group;
-
-    if (dap_chain_global_db_driver_is(store_data.group, store_data.key))
-    {
-        if ( (l_obj = dap_chain_global_db_driver_read(store_data.group, store_data.key, &l_count_out)) )
-        {
-            if ( (l_count_out > 1) )
-                log_it(L_WARNING, "Got more then 1 records (%zu) for group '%s'", l_count_out, l_group);
-
-            l_timestamp = l_obj->timestamp;
-            dap_store_obj_free(l_obj, l_count_out);
-        }
-    }
-
-    return l_timestamp;
-}
-
-
-
diff --git a/modules/global-db/dap_global_db.c b/modules/global-db/dap_global_db.c
index aaf3910b9f..fc10b697f7 100644
--- a/modules/global-db/dap_global_db.c
+++ b/modules/global-db/dap_global_db.c
@@ -136,7 +136,7 @@ static bool s_msg_opcode_set_multiple(struct queue_io_msg * a_msg);
 static bool s_msg_opcode_pin(struct queue_io_msg * a_msg);
 static bool s_msg_opcode_unpin(struct queue_io_msg * a_msg);
 static bool s_msg_opcode_delete(struct queue_io_msg * a_msg);
-
+static bool s_msg_opcode_flush(struct queue_io_msg * a_msg);
 // Free memor for queue i/o message
 static void s_queue_io_msg_delete( struct queue_io_msg * a_msg);
 
@@ -593,7 +593,7 @@ static bool s_msg_opcode_set_multiple(struct queue_io_msg * a_msg)
             int l_ret = dap_chain_global_db_driver_add(&l_store_obj,1);
 
             if(a_msg->callback_result){
-                a_msg->callback_result( l_ret ? DAP_GLOBAL_DB_RC_SUCCESS:
+                a_msg->callback_result( l_ret==0 ? DAP_GLOBAL_DB_RC_SUCCESS:
                                                 DAP_GLOBAL_DB_RC_ERROR, a_msg->group, a_msg->key,
                                        a_msg->value, a_msg->value_length, l_store_obj.timestamp ,
                                        a_msg->value_is_pinned , a_msg->callback_arg );
@@ -723,7 +723,7 @@ static bool s_msg_opcode_delete(struct queue_io_msg * a_msg)
     if (a_msg->key) {
         if (l_res >= 0) {
             // add to Del group
-            s_record_del_history_add(a_msg->group, a_msg->key, dap_nanotime_now() );
+            l_res = s_record_del_history_add(a_msg->group, a_msg->key, dap_nanotime_now() );
         }
         // do not add to history if l_res=1 (already deleted)
         if (!l_res) {
@@ -732,7 +732,74 @@ static bool s_msg_opcode_delete(struct queue_io_msg * a_msg)
         }
     }
 
+    if(a_msg->callback_result){
+        a_msg->callback_result( l_res==0 ? DAP_GLOBAL_DB_RC_SUCCESS:
+                                        DAP_GLOBAL_DB_RC_ERROR,
+                                a_msg->group, a_msg->key,
+                               NULL, 0, 0 , false, a_msg->callback_arg );
+    }
+
+    return true;
+}
+
+/**
+ * @brief Deallocates memory of an objs array.
+ * @param objs a pointer to the first object of the array
+ * @param a_count a number of objects in the array
+ * @return (none)
+ */
+void dap_global_db_objs_delete(dap_global_db_obj_t *a_objs, size_t a_count)
+{
+dap_global_db_obj_t *l_obj;
+
+    if ( !a_objs || !a_count )                                              /* Sanity checks */
+        return;
+
+    for(l_obj = a_objs; a_count--; l_obj++)                                 /* Run over array's elements */
+    {
+        DAP_DELETE(l_obj->key);
+        DAP_DELETE(l_obj->value);
+    }
+
+    DAP_DELETE(a_objs);                                                     /* Finaly kill the the array */
+}
+
+/**
+ * @brief dap_global_db_flush
+ * @param a_callback
+ * @param a_arg
+ * @return
+ */
+int dap_global_db_flush( dap_global_db_callback_result_t a_callback, void * a_arg )
+{
+    if(s_context_global_db == NULL){
+        log_it(L_ERROR, "GlobalDB context is not initialized, can't call dap_global_db_delete");
+        return -666;
+    }
+    struct queue_io_msg * l_msg = DAP_NEW_Z(struct queue_io_msg);
+    l_msg->opcode = MSG_OPCODE_DELETE;
+    l_msg->callback_arg = a_arg;
+    l_msg->callback_result = a_callback;
+
+    int l_ret = dap_events_socket_queue_ptr_send(s_context_global_db->queue_io,l_msg);
+    if (l_ret != 0)
+        s_queue_io_msg_delete(l_msg);
+    return l_ret;
+}
 
+/**
+ * @brief s_msg_opcode_flush
+ * @param a_msg
+ * @return
+ */
+static bool s_msg_opcode_flush(struct queue_io_msg * a_msg)
+{
+    int l_res = dap_db_driver_flush();
+    if(a_msg->callback_result){
+        a_msg->callback_result( l_res==0 ? DAP_GLOBAL_DB_RC_SUCCESS:
+                                        DAP_GLOBAL_DB_RC_ERROR,
+                                NULL,NULL,NULL, 0, 0 , false, a_msg->callback_arg );
+    }
     return true;
 }
 
@@ -756,12 +823,10 @@ static void s_queue_io_callback( dap_events_socket_t * a_es, void * a_arg)
         case MSG_OPCODE_GET_ALL: l_msg_delete = s_msg_opcode_get_all(l_msg); break;
         case MSG_OPCODE_SET: l_msg_delete = s_msg_opcode_set(l_msg); break;
         case MSG_OPCODE_SET_MULTIPLE: l_msg_delete = s_msg_opcode_set_multiple(l_msg); break;
-        case MSG_OPCODE_PIN:{
-        } break;
-        case MSG_OPCODE_UNPIN:{
-        } break;
-        case MSG_OPCODE_DELETE:{
-        } break;
+        case MSG_OPCODE_PIN: l_msg_delete = s_msg_opcode_pin(l_msg); break;
+        case MSG_OPCODE_UNPIN: l_msg_delete = s_msg_opcode_unpin(l_msg); break;
+        case MSG_OPCODE_DELETE: l_msg_delete = s_msg_opcode_delete(l_msg); break;
+        case MSG_OPCODE_FLUSH: l_msg_delete = s_msg_opcode_flush(l_msg); break;
         default:{
             log_it(L_WARNING, "Message with undefined opcode %d received in queue_io",
                    l_msg->opcode);
diff --git a/modules/global-db/include/dap_chain_global_db.h b/modules/global-db/include/dap_chain_global_db.h
index 06b2ae6dd7..3fad2c98b7 100644
--- a/modules/global-db/include/dap_chain_global_db.h
+++ b/modules/global-db/include/dap_chain_global_db.h
@@ -44,7 +44,7 @@ void s_dap_chain_global_db_obj_delete(dap_global_db_obj_t *obj);
 /**
  * Delete mass of struct dap_global_db_obj_t
  */
-void dap_chain_global_db_objs_delete(dap_global_db_obj_t *a_objs, size_t a_count);
+void dap_global_db_objs_delete(dap_global_db_obj_t *a_objs, size_t a_count);
 
 int dap_chain_global_db_init(dap_config_t * a_config);
 
diff --git a/modules/global-db/include/dap_global_db.h b/modules/global-db/include/dap_global_db.h
index aaa1984b6b..3ef091a1f5 100644
--- a/modules/global-db/include/dap_global_db.h
+++ b/modules/global-db/include/dap_global_db.h
@@ -81,3 +81,6 @@ int dap_global_db_set_multiple(const char * a_group, dap_global_db_obj_t * a_val
 int dap_global_db_pin(const char * a_group, const char *a_key, dap_global_db_callback_result_t a_callback, void * a_arg );
 int dap_global_db_unpin(const char * a_group, const char *a_key, dap_global_db_callback_result_t a_callback, void * a_arg );
 int dap_global_db_delete(const char * a_group, const char *a_key, dap_global_db_callback_result_t a_callback, void * a_arg );
+int dap_global_db_flush( dap_global_db_callback_result_t a_callback, void * a_arg );
+
+void dap_global_db_objs_delete(dap_global_db_obj_t *a_objs, size_t a_count);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index eb7739cece..f08bfccec6 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -2163,7 +2163,7 @@ static int s_cli_net(int argc, char **argv, char **a_str_reply)
                     dap_string_append(l_reply, l_objs[i].key);
                     dap_string_append(l_reply, "\n");
                 }
-                dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+                dap_global_db_objs_delete(l_objs, l_objs_count);
                 *a_str_reply = l_reply->len ? l_reply->str : dap_strdup("No entries found");
                 dap_string_free(l_reply, false);
                 return 0;
@@ -3091,7 +3091,7 @@ dap_list_t* dap_chain_net_get_node_list(dap_chain_net_t * l_net)
         l_address->uint64 = l_node_info->hdr.address.uint64;
         l_node_list = dap_list_append(l_node_list, l_address);
     }
-    dap_chain_global_db_objs_delete(l_objs, l_nodes_count);
+    dap_global_db_objs_delete(l_objs, l_nodes_count);
     return l_node_list;
 }
 
@@ -3172,7 +3172,7 @@ void dap_chain_net_proc_mempool (dap_chain_net_t * a_net)
             if(l_objs_processed < l_datums_size)
                 log_it(L_WARNING, "%s.%s: %zu records not processed", a_net->pub.name, l_chain->name,
                         l_datums_size - l_objs_processed);
-            dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+            dap_global_db_objs_delete(l_objs, l_objs_size);
 
             // Cleanup datums array
             if(l_datums){
@@ -3324,7 +3324,7 @@ static bool s_net_check_acl(dap_chain_net_t *a_net, dap_chain_hash_fast_t *a_pke
                         break;
                     }
                 }
-                dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+                dap_global_db_objs_delete(l_objs, l_objs_count);
             }
         }
         if (!l_authorized) {
diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c
index 6ef1916221..90b3ff0f51 100644
--- a/modules/net/dap_chain_node.c
+++ b/modules/net/dap_chain_node.c
@@ -317,7 +317,7 @@ bool dap_chain_node_mempool_autoproc_init()
                         dap_chain_global_db_gr_del( l_objs[i].key, l_gdb_group_mempool);
                     }
                 }
-                dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+                dap_global_db_objs_delete(l_objs, l_objs_size);
             }
             DAP_DELETE(l_gdb_group_mempool);
             dap_chain_add_mempool_notify_callback(l_chain, s_chain_node_mempool_autoproc_notify, l_chain);
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index d1e0dc7de4..4500b01034 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -164,7 +164,7 @@ static dap_list_t* get_aliases_by_name(dap_chain_net_t * l_net, dap_chain_node_a
             list_aliases = dap_list_prepend(list_aliases, strdup(obj->key));
         }
     }
-    dap_chain_global_db_objs_delete(objs, data_size);
+    dap_global_db_objs_delete(objs, data_size);
     return list_aliases;
 }
 
@@ -626,7 +626,7 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
             dap_string_append_printf(l_string_reply, "No records\n");
             dap_chain_node_cli_set_reply_text(a_str_reply, l_string_reply->str);
             dap_string_free(l_string_reply, true);
-            dap_chain_global_db_objs_delete(l_objs, l_nodes_count);
+            dap_global_db_objs_delete(l_objs, l_nodes_count);
             return -1;
         } else {
             dap_string_append_printf(l_string_reply, "Got %zu records:\n", l_nodes_count);
@@ -702,9 +702,9 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
                 dap_string_free(aliases_string, true);
                 dap_string_free(links_string, true);
             }
-            dap_chain_global_db_objs_delete(l_aliases_objs, l_data_size);
+            dap_global_db_objs_delete(l_aliases_objs, l_data_size);
         }
-        dap_chain_global_db_objs_delete(l_objs, l_nodes_count);
+        dap_global_db_objs_delete(l_objs, l_nodes_count);
     }
     dap_chain_node_cli_set_reply_text(a_str_reply, l_string_reply->str);
     dap_string_free(l_string_reply, true);
@@ -2308,7 +2308,7 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a
                     l_datum->header.data_size, l_data_hash_str, dap_ctime_r(&l_ts_create, buf));
             dap_chain_datum_dump(a_str_tmp, l_datum, a_hash_out_type);
         }
-        dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+        dap_global_db_objs_delete(l_objs, l_objs_size);
     }
 
     DAP_DELETE(l_gdb_group_mempool);
diff --git a/modules/net/dap_chain_node_dns_server.c b/modules/net/dap_chain_node_dns_server.c
index 857e295124..609d43fb26 100644
--- a/modules/net/dap_chain_node_dns_server.c
+++ b/modules/net/dap_chain_node_dns_server.c
@@ -322,7 +322,7 @@ dap_chain_node_info_t *dap_dns_resolve_hostname(char *str)
         return NULL;
     dap_chain_node_info_t *l_node_info = DAP_NEW_Z(dap_chain_node_info_t);
     memcpy(l_node_info, l_node_candidate, sizeof(dap_chain_node_info_t));
-    dap_chain_global_db_objs_delete(l_objs, l_nodes_count);
+    dap_global_db_objs_delete(l_objs, l_nodes_count);
     log_it(L_DEBUG, "DNS resolver find ip %s", inet_ntoa(l_node_info->hdr.ext_addr_v4));
     return l_node_info;
 }
diff --git a/modules/net/srv/dap_chain_net_srv_order.c b/modules/net/srv/dap_chain_net_srv_order.c
index 86a2ab62dc..ad7eb29538 100644
--- a/modules/net/srv/dap_chain_net_srv_order.c
+++ b/modules/net/srv/dap_chain_net_srv_order.c
@@ -486,7 +486,7 @@ int dap_chain_net_srv_order_find_all_by(dap_chain_net_t * a_net,const dap_chain_
     }
     *a_output_orders_count = l_output_orders_count;
     DAP_DEL_Z(l_order);
-    dap_chain_global_db_objs_delete(l_orders, l_orders_count);
+    dap_global_db_objs_delete(l_orders, l_orders_count);
     DAP_DELETE(l_gdb_group_str);
     return 0;
 }
diff --git a/modules/service/stake/dap_chain_net_srv_stake.c b/modules/service/stake/dap_chain_net_srv_stake.c
index 6538a04c0a..741cdac215 100644
--- a/modules/service/stake/dap_chain_net_srv_stake.c
+++ b/modules/service/stake/dap_chain_net_srv_stake.c
@@ -1154,7 +1154,7 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, cha
                 DAP_DELETE(l_addr);
                 DAP_DELETE(l_stake);
             }
-            dap_chain_global_db_objs_delete(l_orders, l_orders_count);
+            dap_global_db_objs_delete(l_orders, l_orders_count);
             DAP_DELETE( l_gdb_group_str);
             if (!l_reply_str->len) {
                 dap_string_append(l_reply_str, "No orders found");
diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c
index f04ea9ce2f..000fe05e40 100644
--- a/modules/service/xchange/dap_chain_net_srv_xchange.c
+++ b/modules/service/xchange/dap_chain_net_srv_xchange.c
@@ -81,7 +81,7 @@ int dap_chain_net_srv_xchange_init()
         dap_chain_net_srv_xchange_price_t *l_price = s_xchange_db_load(l_prices[i].key, l_prices[i].value);
         HASH_ADD_KEYPTR(hh, s_srv_xchange->pricelist, l_price->key_ptr, strlen(l_price->key_ptr), l_price);
     }
-    dap_chain_global_db_objs_delete(l_prices, l_prices_count);
+    dap_global_db_objs_delete(l_prices, l_prices_count);
     return 1;
 }
 
@@ -871,7 +871,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, char **a_str_reply)
                                          dap_chain_balance_print(l_price->datoshi_sell), dap_chain_balance_print(l_price->rate));
                 DAP_DELETE(l_price);
             }
-            dap_chain_global_db_objs_delete(l_orders, l_orders_count);
+            dap_global_db_objs_delete(l_orders, l_orders_count);
             DAP_DELETE( l_gdb_group_str);
             if (!l_reply_str->len) {
                 dap_string_append(l_reply_str, "No orders found");
diff --git a/modules/type/blocks/dap_chain_block_chunk.c b/modules/type/blocks/dap_chain_block_chunk.c
index 573dcbd5c6..b4795aa686 100644
--- a/modules/type/blocks/dap_chain_block_chunk.c
+++ b/modules/type/blocks/dap_chain_block_chunk.c
@@ -47,7 +47,7 @@ dap_chain_block_chunks_t * dap_chain_block_chunks_create(dap_chain_cs_blocks_t *
         dap_chain_block_cache_t *l_block_cache = dap_chain_block_cache_new(a_blocks, (dap_chain_block_t*)l_objs[n].value, l_objs[n].value_len);
         dap_chain_block_chunks_add(l_ret, l_block_cache );
     }
-    dap_chain_global_db_objs_delete(l_objs,l_objs_count);
+    dap_global_db_objs_delete(l_objs,l_objs_count);
     return l_ret;
 }
 
diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c
index 2b9b2eea11..1ae3534e57 100644
--- a/modules/type/blocks/dap_chain_cs_blocks.c
+++ b/modules/type/blocks/dap_chain_cs_blocks.c
@@ -1354,7 +1354,7 @@ void dap_chain_cs_new_block_add_datums(dap_chain_t *a_chain)
                                                                     l_datum, l_datum_size);
         }
     }
-    dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+    dap_global_db_objs_delete(l_objs, l_objs_size);
     pthread_rwlock_unlock(&l_blocks_pvt->datums_lock);
 }
 
diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c
index c1e84aa9b1..f5de7a1ba6 100644
--- a/modules/type/dag/dap_chain_cs_dag.c
+++ b/modules/type/dag/dap_chain_cs_dag.c
@@ -626,7 +626,7 @@ void dap_chain_cs_new_event_add_datums(dap_chain_t *a_chain, bool a_round_check)
         size_t l_round_objs_size = 0;
         dap_global_db_obj_t *l_round_objs = dap_chain_global_db_gr_load(l_gdb_group_round, &l_round_objs_size);
         if (l_round_objs_size) {
-            dap_chain_global_db_objs_delete(l_round_objs, l_round_objs_size);
+            dap_global_db_objs_delete(l_round_objs, l_round_objs_size);
             return;
         }
     }
@@ -671,7 +671,7 @@ void dap_chain_cs_new_event_add_datums(dap_chain_t *a_chain, bool a_round_check)
             }
             break;
         }
-        dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+        dap_global_db_objs_delete(l_objs, l_objs_size);
     }
 }
 
@@ -1549,7 +1549,7 @@ static int s_cli_dag(int argc, char ** argv, char **a_str_reply)
             }
 
             // Cleaning up
-            dap_chain_global_db_objs_delete(l_objs, l_objs_size);
+            dap_global_db_objs_delete(l_objs, l_objs_size);
             dap_chain_node_cli_set_reply_text(a_str_reply,l_str_ret_tmp->str);
             dap_string_free(l_str_ret_tmp,false);
 
@@ -1898,7 +1898,7 @@ static int s_cli_dag(int argc, char ** argv, char **a_str_reply)
 
                         }
                         if (l_objs && l_objs_count )
-                            dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+                            dap_global_db_objs_delete(l_objs, l_objs_count);
                         ret = 0;
                     } else {
                         dap_string_append_printf(l_str_tmp,"%s.%s: Error! No GlobalDB group!\n",l_net->pub.name,l_chain->name);
-- 
GitLab