mirror of
https://github.com/emqx/neuron.git
synced 2026-10-23 18:37:45 +08:00
Merge pull request #438 from fengzeroz/main
fix(driver): del unused tag cache
This commit is contained in:
@@ -21,7 +21,7 @@ jobs:
|
||||
uses: DoozyX/clang-format-lint-action@v0.12
|
||||
with:
|
||||
source: 'src plugins include tests'
|
||||
exclude: 'include/neuron/vector.h include/neuron/utils/uthash.h include/neuron/utils/utarray.h'
|
||||
exclude: 'include/neuron/vector.h include/neuron/utils/uthash.h include/neuron/utils/utarray.h include/neuron/utils/utlist.h'
|
||||
clangFormatVersion: 10
|
||||
style: file
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ endif()
|
||||
|
||||
configure_file(extern/uthash/include/uthash.h ${CMAKE_SOURCE_DIR}/include/neuron/utils/uthash.h)
|
||||
configure_file(extern/uthash/include/utarray.h ${CMAKE_SOURCE_DIR}/include/neuron/utils/utarray.h)
|
||||
configure_file(extern/uthash/include/utlist.h ${CMAKE_SOURCE_DIR}/include/neuron/utils/utlist.h)
|
||||
|
||||
add_subdirectory(extern/vector)
|
||||
set_property(TARGET vector-static PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -55,6 +55,8 @@ rules.append(mkdeb.FileMap("../include/neuron/utils/uthash.h",
|
||||
"/usr/local/include/neuron/utils/"))
|
||||
rules.append(mkdeb.FileMap("../include/neuron/utils/utarray.h",
|
||||
"/usr/local/include/neuron/utils/"))
|
||||
rules.append(mkdeb.FileMap("../include/neuron/utils/utlist.h",
|
||||
"/usr/local/include/neuron/utils/"))
|
||||
rules.append(mkdeb.FileMap("../include/neuron/adapter.h",
|
||||
"/usr/local/include/neuron/"))
|
||||
rules.append(mkdeb.FileMap("../include/neuron/adapter_msg.h",
|
||||
|
||||
@@ -153,6 +153,18 @@ int neu_driver_cache_get(neu_driver_cache_t *cache, const char *key,
|
||||
|
||||
void neu_driver_cache_del(neu_driver_cache_t *cache, const char *key)
|
||||
{
|
||||
(void) cache;
|
||||
(void) key;
|
||||
struct elem *elem = NULL;
|
||||
|
||||
pthread_mutex_lock(&cache->mtx);
|
||||
HASH_FIND_STR(cache->table, key, elem);
|
||||
|
||||
if (elem != NULL) {
|
||||
HASH_DEL(cache->table, elem);
|
||||
if (elem->n_byte != 0) {
|
||||
free(elem->bytes);
|
||||
}
|
||||
free(elem);
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&cache->mtx);
|
||||
}
|
||||
|
||||
@@ -270,6 +270,13 @@ void neu_adapter_driver_process_msg(neu_adapter_driver_t *driver,
|
||||
if (sg != NULL) {
|
||||
driver->adapter.plugin_info.module->intf_funs->driver.del_group(
|
||||
driver->adapter.plugin_info.plugin, &sg->grp);
|
||||
for (neu_datatag_t **tag =
|
||||
(neu_datatag_t **) utarray_front(sg->grp.tags);
|
||||
tag != NULL;
|
||||
tag = (neu_datatag_t **) utarray_next(sg->grp.tags, tag)) {
|
||||
neu_driver_cache_del(driver->cache, (*tag)->name);
|
||||
}
|
||||
|
||||
HASH_DEL(driver->grps, sg);
|
||||
neu_adapter_del_timer((neu_adapter_t *) driver, sg->report);
|
||||
neu_event_del_timer(driver->driver_events, sg->read);
|
||||
@@ -326,6 +333,12 @@ static int read_callback(void *usr_data)
|
||||
sg->driver->adapter.plugin_info.module->intf_funs->driver.del_group(
|
||||
sg->driver->adapter.plugin_info.plugin, &sg->grp);
|
||||
|
||||
for (neu_datatag_t **tag =
|
||||
(neu_datatag_t **) utarray_front(sg->grp.tags);
|
||||
tag != NULL;
|
||||
tag = (neu_datatag_t **) utarray_next(sg->grp.tags, tag)) {
|
||||
neu_driver_cache_del(sg->driver->cache, (*tag)->name);
|
||||
}
|
||||
neu_plugin_group_t grp = { .group_name = sg->grp.group_name };
|
||||
load_tags(sg->driver, new_config, &grp.tags);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user