diff --git a/src/adapter/driver/cache.c b/src/adapter/driver/cache.c index 0e514d5b..bbc62798 100644 --- a/src/adapter/driver/cache.c +++ b/src/adapter/driver/cache.c @@ -123,9 +123,10 @@ void neu_driver_cache_add(neu_driver_cache_t *cache, const char *group, nng_mtx_unlock(cache->mtx); } -void neu_driver_cache_update(neu_driver_cache_t *cache, const char *group, - const char *tag, int64_t timestamp, - neu_dvalue_t value) +void neu_driver_cache_update_change(neu_driver_cache_t *cache, + const char *group, const char *tag, + int64_t timestamp, neu_dvalue_t value, + bool change) { struct elem *elem = NULL; tkey_t key = to_key(group, tag); @@ -185,6 +186,9 @@ void neu_driver_cache_update(neu_driver_cache_t *cache, const char *group, } } + if (change) { + elem->changed = true; + } elem->value.type = value.type; elem->value.value = value.value; } @@ -192,6 +196,13 @@ void neu_driver_cache_update(neu_driver_cache_t *cache, const char *group, nng_mtx_unlock(cache->mtx); } +void neu_driver_cache_update(neu_driver_cache_t *cache, const char *group, + const char *tag, int64_t timestamp, + neu_dvalue_t value) +{ + neu_driver_cache_update_change(cache, group, tag, timestamp, value, false); +} + int neu_driver_cache_get(neu_driver_cache_t *cache, const char *group, const char *tag, neu_driver_cache_value_t *value) { diff --git a/src/adapter/driver/cache.h b/src/adapter/driver/cache.h index 0df8b7a6..4e8bf274 100644 --- a/src/adapter/driver/cache.h +++ b/src/adapter/driver/cache.h @@ -34,6 +34,10 @@ void neu_driver_cache_add(neu_driver_cache_t *cache, const char *group, void neu_driver_cache_update(neu_driver_cache_t *cache, const char *group, const char *tag, int64_t timestamp, neu_dvalue_t value); +void neu_driver_cache_update_change(neu_driver_cache_t *cache, + const char *group, const char *tag, + int64_t timestamp, neu_dvalue_t value, + bool change); void neu_driver_cache_del(neu_driver_cache_t *cache, const char *group, const char *tag); diff --git a/src/adapter/driver/driver.c b/src/adapter/driver/driver.c index 3c84fa23..36819c91 100644 --- a/src/adapter/driver/driver.c +++ b/src/adapter/driver/driver.c @@ -107,12 +107,14 @@ static void update_im(neu_adapter_t *adapter, const char *group, neu_reqresp_head_t header = { 0 }; if (tag == NULL || value.type == NEU_TYPE_ERROR) { - nlog_warn("update_im tag is null or value is error"); + nlog_warn("update_im tag is null or value is error %d", + value.value.i32); return; } UT_array *tags = neu_adapter_driver_get_ptag(driver, group, tag); - neu_driver_cache_update(driver->cache, group, tag, global_timestamp, value); + neu_driver_cache_update_change(driver->cache, group, tag, global_timestamp, + value, true); driver->adapter.cb_funs.update_metric(&driver->adapter, NEU_METRIC_TAG_READS_TOTAL, 1, NULL); neu_datatag_t *first = utarray_front(tags); @@ -1027,7 +1029,7 @@ UT_array *neu_adapter_driver_get_ptag(neu_adapter_driver_t *driver, neu_datatag_t *t = neu_group_find_tag(find->group, tag); if (t != NULL) { utarray_new(tags, neu_tag_get_icd()); - utarray_push_back(tags, &t); + utarray_push_back(tags, t); neu_tag_free(t); } }