diff options
author | Costa Tsaousis <costa@netdata.cloud> | 2022-10-23 23:46:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-23 23:46:43 +0300 |
commit | 00712b351b3c83a54a147ca23365458acbef3105 (patch) | |
tree | 9d1614a0ce54195bc9e2d52454f0974eb9f29819 /libnetdata | |
parent | 9798a2b71e880a73b5b95d62d2e0c63dbc649a0e (diff) |
QUERY_TARGET: new query engine for Netdata Agent (#13697)
* initial implementation of QUERY_TARGET
* rrd2rrdr() interface
* rrddim_find_best_tier_for_timeframe() ported
* added dimension filtering
* added db object in query target
* rrd2rrdr() ported
* working on formatters
* working on jsonwrapper
* finally, it compiles...
* 1st run without crashes
* query planer working
* cleanup old code
* review changes
* fix also changing data collection frequency
* fix signess
* fix rrdlabels and dimension ordering
* fixes
* remove unused variable
* ml should accept NULL response from rrd2rrdr()
* number formatting fixes
* more number formatting fixes
* more number formatting fixes
* support mc parallel queries
* formatting and cleanup
* added rrd2rrdr_legacy() as a simplified interface to run a query
* make sure rrdset_find_natural_update_every_for_timeframe() returns a value
* make signed comparisons
* weights endpoint using rrdcontexts
* fix for legacy db modes and cleanup
* fix for chart_ids and remove AR chart from weights endpoint
* Ignore command if not initialized yet
* remove unused members
* properly initialize window
* code cleanup - rrddim linked list is gone; rrdset rwlock is gone too
* reviewed RRDR.internal members
* eliminate unnecessary members of QUERY_TARGET
* more complete query ids; more detailed information on aborted queries
* properly terminate option strings
* query id contains group_options which is controlled by users, so escaping is necessary
* tense in query id
* tense in query id - again
* added the remaining query options to the query id
* Expose hidden option to the dimension
* use the hidden flag when loading context dimensions
* Specify table alias for option
* dont update chart last access time, unless at least a dimension of the chart will be queried
Co-authored-by: Stelios Fragkakis <52996999+stelfrag@users.noreply.github.com>
Diffstat (limited to 'libnetdata')
-rw-r--r-- | libnetdata/required_dummies.h | 1 | ||||
-rw-r--r-- | libnetdata/simple_pattern/simple_pattern.h | 4 | ||||
-rw-r--r-- | libnetdata/threads/threads.c | 2 |
3 files changed, 6 insertions, 1 deletions
diff --git a/libnetdata/required_dummies.h b/libnetdata/required_dummies.h index 5b482d05ba..ad1e8fb84b 100644 --- a/libnetdata/required_dummies.h +++ b/libnetdata/required_dummies.h @@ -35,6 +35,7 @@ int health_variable_lookup(STRING *variable, struct rrdcalc *rc, NETDATA_DOUBLE void rrdset_thread_rda_free(void){}; void sender_thread_buffer_free(void){}; +void query_target_free(void){}; // required by get_system_cpus() char *netdata_configured_host_prefix = ""; diff --git a/libnetdata/simple_pattern/simple_pattern.h b/libnetdata/simple_pattern/simple_pattern.h index e4bc0abc4b..7282053e8b 100644 --- a/libnetdata/simple_pattern/simple_pattern.h +++ b/libnetdata/simple_pattern/simple_pattern.h @@ -34,7 +34,9 @@ void simple_pattern_dump(uint64_t debug_type, SIMPLE_PATTERN *p) ; int simple_pattern_is_potential_name(SIMPLE_PATTERN *p) ; char *simple_pattern_iterate(SIMPLE_PATTERN **p); -//Auxiliary function to create a pattern +// Auxiliary function to create a pattern char *simple_pattern_trim_around_equal(char *src); +#define is_valid_sp(x) ((x) && *(x) && !((x)[0] == '*' && (x)[1] == '\0')) + #endif //NETDATA_SIMPLE_PATTERN_H diff --git a/libnetdata/threads/threads.c b/libnetdata/threads/threads.c index b18a4383f3..5c3d2675cd 100644 --- a/libnetdata/threads/threads.c +++ b/libnetdata/threads/threads.c @@ -108,6 +108,7 @@ void netdata_threads_init_after_fork(size_t stacksize) { extern void rrdset_thread_rda_free(void); extern void sender_thread_buffer_free(void); +extern void query_target_free(void); static void thread_cleanup(void *ptr) { if(netdata_thread != ptr) { @@ -120,6 +121,7 @@ static void thread_cleanup(void *ptr) { sender_thread_buffer_free(); rrdset_thread_rda_free(); + query_target_free(); thread_cache_destroy(); freez((void *)netdata_thread->tag); |