Fix a bug in cgroups renaming (#5612)
Vladimir Kobal committed
Mar 12, 2019 at 16:35 UTC
db74925edb6e1867c071adfafe8d196cfc7f6d18
1 file changed
+8
-6
collectors/cgroups.plugin/sys_fs_cgroup.c
+8
-6
@@ -888,7 +888,7 @@ static inline void cgroup_get_chart_name(struct cgroup *cg) {
888
pid_t cgroup_pid;
889
char command[CGROUP_CHARTID_LINE_MAX + 1];
890
891
- snprintfz(command, CGROUP_CHARTID_LINE_MAX, "exec %s '%s'", cgroups_rename_script, cg->id);
891
+ snprintfz(command, CGROUP_CHARTID_LINE_MAX, "exec %s '%s'", cgroups_rename_script, cg->chart_id);
892
893
debug(D_CGROUP, "executing command \"%s\" for cgroup '%s'", command, cg->id);
894
FILE *fp = mypopen(command, &cgroup_pid);
@@ -908,12 +908,14 @@ static inline void cgroup_get_chart_name(struct cgroup *cg) {
908
if(likely(!name_error))
909
cg->pending_renames = 0;
910
911
- freez(cg->chart_title);
912
- cg->chart_title = cgroup_title_strdupz(s);
911
+ if(likely(cg->pending_renames < 2)) {
912
+ freez(cg->chart_title);
913
+ cg->chart_title = cgroup_title_strdupz(s);
914
914
- freez(cg->chart_id);
915
- cg->chart_id = cgroup_chart_id_strdupz(s);
916
- cg->hash_chart = simple_hash(cg->chart_id);
915
+ freez(cg->chart_id);
916
+ cg->chart_id = cgroup_chart_id_strdupz(s);
917
+ cg->hash_chart = simple_hash(cg->chart_id);
918
+ }
919
}
920
}
921
}