|
@@ -504,23 +504,29 @@ class CGroupsHandlerImpl implements CGroupsHandler {
|
|
|
private boolean checkAndDeleteCgroup(File cgf) throws InterruptedException {
|
|
|
boolean deleted = false;
|
|
|
// FileInputStream in = null;
|
|
|
- try (FileInputStream in = new FileInputStream(cgf + "/tasks")) {
|
|
|
- if (in.read() == -1) {
|
|
|
+ if ( cgf.exists() ) {
|
|
|
+ try (FileInputStream in = new FileInputStream(cgf + "/tasks")) {
|
|
|
+ if (in.read() == -1) {
|
|
|
/*
|
|
|
* "tasks" file is empty, sleep a bit more and then try to delete the
|
|
|
* cgroup. Some versions of linux will occasionally panic due to a race
|
|
|
* condition in this area, hence the paranoia.
|
|
|
*/
|
|
|
- Thread.sleep(deleteCGroupDelay);
|
|
|
- deleted = cgf.delete();
|
|
|
- if (!deleted) {
|
|
|
- LOG.warn("Failed attempt to delete cgroup: " + cgf);
|
|
|
+ Thread.sleep(deleteCGroupDelay);
|
|
|
+ deleted = cgf.delete();
|
|
|
+ if (!deleted) {
|
|
|
+ LOG.warn("Failed attempt to delete cgroup: " + cgf);
|
|
|
+ }
|
|
|
+ } else{
|
|
|
+ logLineFromTasksFile(cgf);
|
|
|
}
|
|
|
- } else {
|
|
|
- logLineFromTasksFile(cgf);
|
|
|
+ } catch (IOException e) {
|
|
|
+ LOG.warn("Failed to read cgroup tasks file. ", e);
|
|
|
}
|
|
|
- } catch (IOException e) {
|
|
|
- LOG.warn("Failed to read cgroup tasks file. ", e);
|
|
|
+ } else {
|
|
|
+ LOG.info("Parent Cgroups directory {} does not exist. Skipping "
|
|
|
+ + "deletion", cgf.getPath());
|
|
|
+ deleted = true;
|
|
|
}
|
|
|
return deleted;
|
|
|
}
|