@cryptotaxi247 / netdata-1 / commits / 7ac912b5b

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 }