Remove system_info copying (#6113)
* Remove system_info copying * Return res flag
Vladimir Kobal committed
May 24, 2019 at 17:18 UTC
7ac912b5baad5da2a2ff3374fe897a5a2593daa9
4 files changed
+34
-49
daemon/main.c
+8
-7
@@ -670,7 +670,7 @@ static int load_netdata_conf(char *filename, char overwrite_used) {
670
return ret;
671
}
672
673
-int get_system_info(struct rrdhost_system_info *system_info) {
673
+int get_system_info(RRDHOST* host, struct rrdhost_system_info *system_info) {
674
char *script;
675
script = mallocz(sizeof(char) * (strlen(netdata_configured_primary_plugins_dir) + strlen("system-info.sh") + 2));
676
sprintf(script, "%s/%s", netdata_configured_primary_plugins_dir, "system-info.sh");
@@ -701,7 +701,7 @@ int get_system_info(struct rrdhost_system_info *system_info) {
701
char n[51], v[101];
702
snprintfz(n, 50,"%s",name);
703
snprintfz(v, 101,"%s",value);
704
- if(unlikely(rrdhost_set_system_info_variable(system_info, n, v))) {
704
+ if(unlikely(rrdhost_set_system_info_variable(host, system_info, n, v))) {
705
info("Unexpected environment variable %s=%s", n, v);
706
}
707
else {
@@ -1134,10 +1134,6 @@ int main(int argc, char **argv) {
1134
// initialize the log files
1135
open_all_log_files();
1136
1137
- netdata_anonymous_statistics_enabled=-1;
1138
- struct rrdhost_system_info *system_info = calloc(1, sizeof(struct rrdhost_system_info));
1139
- if (get_system_info(system_info) == 0) send_statistics("START","-", "-");
1140
-
1137
#ifdef NETDATA_INTERNAL_CHECKS
1138
if(debug_flags != 0) {
1139
struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
@@ -1171,8 +1167,11 @@ int main(int argc, char **argv) {
1167
// ------------------------------------------------------------------------
1168
// initialize rrd, registry, health, rrdpush, etc.
1169
1170
+ netdata_anonymous_statistics_enabled=-1;
1171
+ struct rrdhost_system_info *system_info = calloc(1, sizeof(struct rrdhost_system_info));
1172
+ get_system_info(NULL, system_info);
1173
+
1174
rrd_init(netdata_configured_hostname, system_info);
1175
- rrdhost_system_info_free(system_info);
1175
// ------------------------------------------------------------------------
1176
// enable log flood protection
1177
@@ -1196,6 +1195,8 @@ int main(int argc, char **argv) {
1195
1196
info("netdata initialization completed. Enjoy real-time performance monitoring!");
1197
netdata_ready = 1;
1198
+
1199
+ if (get_system_info(localhost, system_info) == 0) send_statistics("START","-", "-");
1200
1201
// ------------------------------------------------------------------------
1202
// unblock signals
database/rrd.h
+1
-2
@@ -780,8 +780,7 @@ extern RRDHOST *rrdhost_find_or_create(
780
, struct rrdhost_system_info *system_info
781
);
782
783
-extern int rrdhost_set_system_info_variable(struct rrdhost_system_info *system_info, char *name, char *value);
784
-extern struct rrdhost_system_info *rrdhost_system_info_dup(struct rrdhost_system_info *system_info);
783
+extern int rrdhost_set_system_info_variable(RRDHOST *host, struct rrdhost_system_info *system_info, char *name, char *value);
784
785
#if defined(NETDATA_INTERNAL_CHECKS) && defined(NETDATA_VERIFY_LOCKS)
786
extern void __rrdhost_check_wrlock(RRDHOST *host, const char *file, const char *function, const unsigned long line);
database/rrdhost.c
+24
-38
@@ -162,7 +162,7 @@ RRDHOST *rrdhost_create(const char *hostname,
162
host->program_version = strdupz((program_version && *program_version)?program_version:"unknown");
163
host->registry_hostname = strdupz((registry_hostname && *registry_hostname)?registry_hostname:hostname);
164
165
- host->system_info = rrdhost_system_info_dup(system_info);
165
+ host->system_info = system_info;
166
167
avl_init_lock(&(host->rrdset_root_index), rrdset_compare);
168
avl_init_lock(&(host->rrdset_root_index_name), rrdset_compare_name);
@@ -811,82 +811,68 @@ restart_after_removal:
811
// ----------------------------------------------------------------------------
812
// RRDHOST - set system info from environment variables
813
814
-int rrdhost_set_system_info_variable(struct rrdhost_system_info *system_info, char *name, char *value) {
814
+int rrdhost_set_system_info_variable(RRDHOST *host, struct rrdhost_system_info *system_info, char *name, char *value) {
815
+ int res = 0;
816
+
817
+ if(host) rrdhost_wrlock(host);
818
+
819
if(!strcmp(name, "NETDATA_SYSTEM_OS_NAME")){
820
+ freez(system_info->os_name);
821
system_info->os_name = strdupz(value);
822
}
823
else if(!strcmp(name, "NETDATA_SYSTEM_OS_ID")){
824
+ freez(system_info->os_id);
825
system_info->os_id = strdupz(value);
826
}
827
else if(!strcmp(name, "NETDATA_SYSTEM_OS_ID_LIKE")){
828
+ freez(system_info->os_id_like);
829
system_info->os_id_like = strdupz(value);
830
}
831
else if(!strcmp(name, "NETDATA_SYSTEM_OS_VERSION")){
832
+ freez(system_info->os_version);
833
system_info->os_version = strdupz(value);
834
}
835
else if(!strcmp(name, "NETDATA_SYSTEM_OS_VERSION_ID")){
836
+ freez(system_info->os_version_id);
837
system_info->os_version_id = strdupz(value);
838
}
839
else if(!strcmp(name, "NETDATA_SYSTEM_OS_DETECTION")){
840
+ freez(system_info->os_detection);
841
system_info->os_detection = strdupz(value);
842
}
843
else if(!strcmp(name, "NETDATA_SYSTEM_KERNEL_NAME")){
844
+ freez(system_info->kernel_name);
845
system_info->kernel_name = strdupz(value);
846
}
847
else if(!strcmp(name, "NETDATA_SYSTEM_KERNEL_VERSION")){
848
+ freez(system_info->kernel_version);
849
system_info->kernel_version = strdupz(value);
850
}
851
else if(!strcmp(name, "NETDATA_SYSTEM_ARCHITECTURE")){
852
+ freez(system_info->architecture);
853
system_info->architecture = strdupz(value);
854
}
855
else if(!strcmp(name, "NETDATA_SYSTEM_VIRTUALIZATION")){
856
+ freez(system_info->virtualization);
857
system_info->virtualization = strdupz(value);
858
}
859
else if(!strcmp(name, "NETDATA_SYSTEM_VIRT_DETECTION")){
860
+ freez(system_info->virt_detection);
861
system_info->virt_detection = strdupz(value);
862
}
863
else if(!strcmp(name, "NETDATA_SYSTEM_CONTAINER")){
864
+ freez(system_info->container);
865
system_info->container = strdupz(value);
866
}
867
else if(!strcmp(name, "NETDATA_SYSTEM_CONTAINER_DETECTION")){
868
+ freez(system_info->container_detection);
869
system_info->container_detection = strdupz(value);
870
}
854
- else return 1;
855
-
856
- return 0;
857
-}
871
+ else {
872
+ res = 1;
873
+ }
874
859
-struct rrdhost_system_info *rrdhost_system_info_dup(struct rrdhost_system_info *system_info) {
860
- struct rrdhost_system_info *ret = callocz(1, sizeof(struct rrdhost_system_info));
875
+ if(host) rrdhost_unlock(host);
876
862
- if(likely(system_info)) {
863
- if(system_info->os_name)
864
- ret->os_name = strdupz(system_info->os_name);
865
- if(system_info->os_id)
866
- ret->os_id = strdupz(system_info->os_id);
867
- if(system_info->os_id_like)
868
- ret->os_id_like = strdupz(system_info->os_id_like);
869
- if(system_info->os_version)
870
- ret->os_version = strdupz(system_info->os_version);
871
- if(system_info->os_version_id)
872
- ret->os_version_id = strdupz(system_info->os_version_id);
873
- if(system_info->os_detection)
874
- ret->os_detection = strdupz(system_info->os_detection);
875
- if(system_info->kernel_name)
876
- ret->kernel_name = strdupz(system_info->kernel_name);
877
- if(system_info->kernel_version)
878
- ret->kernel_version = strdupz(system_info->kernel_version);
879
- if(system_info->architecture)
880
- ret->architecture = strdupz(system_info->architecture);
881
- if(system_info->virtualization)
882
- ret->virtualization = strdupz(system_info->virtualization);
883
- if(system_info->virt_detection)
884
- ret->virt_detection = strdupz(system_info->virt_detection);
885
- if(system_info->container)
886
- ret->container = strdupz(system_info->container);
887
- if(system_info->container_detection)
888
- ret->container_detection = strdupz(system_info->container_detection);
889
- }
890
-
891
- return ret;
877
+ return res;
878
}
streaming/rrdpush.c
+1
-2
@@ -1079,7 +1079,6 @@ static void rrdpush_receiver_thread_cleanup(void *ptr) {
1079
freez(rpt->client_port);
1080
freez(rpt->program_name);
1081
freez(rpt->program_version);
1082
- rrdhost_system_info_free(rpt->system_info);
1082
freez(rpt);
1083
}
1084
}
@@ -1179,7 +1178,7 @@ int rrdpush_receiver_thread_spawn(RRDHOST *host, struct web_client *w, char *url
1178
else if(!strcmp(name, "tags"))
1179
tags = value;
1180
else
1182
- if(unlikely(rrdhost_set_system_info_variable(system_info, name, value))) {
1181
+ if(unlikely(rrdhost_set_system_info_variable(NULL, system_info, name, value))) {
1182
info("STREAM [receive from [%s]:%s]: request has parameter '%s' = '%s', which is not used.", w->client_ip, w->client_port, key, value);
1183
}
1184
}