From 4b756e42a163a02f2bf29dca930295cfd3c5f0ea Mon Sep 17 00:00:00 2001 From: simonbrandhof Date: Thu, 16 Dec 2010 14:37:26 +0000 Subject: fix memory leak : hibernate session is not correctly cleared with batch processing mode --- .../org/sonar/server/startup/RegisterProvidedProfiles.java | 3 +-- .../src/main/java/org/sonar/server/startup/RegisterRules.java | 10 +++------- 2 files changed, 4 insertions(+), 9 deletions(-) (limited to 'sonar-server') diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java index 144e813f370..99af8cfc275 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java @@ -68,6 +68,7 @@ public final class RegisterProvidedProfiles { DatabaseSession session = sessionFactory.getSession(); cleanProvidedProfiles(profiles, session); saveProvidedProfiles(profiles, session); + session.commit(); profiler.stop(); } @@ -108,7 +109,6 @@ public final class RegisterProvidedProfiles { existingProfile.setActiveRules(new ArrayList()); session.saveWithoutFlush(existingProfile); } - session.commit(); } profiler.stop(); } @@ -130,7 +130,6 @@ public final class RegisterProvidedProfiles { } session.saveWithoutFlush(persistedProfile); - session.commit(); profiler.stop(); } diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterRules.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterRules.java index c222152667c..6f01506b6bc 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterRules.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterRules.java @@ -64,6 +64,8 @@ public final class RegisterRules { profiler.start("Disable deprecated active rules"); deleteDisabledActiveRules(session); profiler.stop(); + + session.commit(); } private void disableDeprecatedUserRules(DatabaseSession session) { @@ -81,12 +83,11 @@ public final class RegisterRules { rule.setEnabled(false); session.saveWithoutFlush(rule); } - session.commit(); + } private void disableAllRules(DatabaseSession session) { session.createQuery("UPDATE " + Rule.class.getSimpleName() + " SET enabled=false WHERE parent IS NULL").executeUpdate(); - session.commit(); } private void registerRepository(RuleRepository repository, DatabaseSession session) { @@ -107,7 +108,6 @@ public final class RegisterRules { } saveNewRules(rulesByKey.values(), session); - session.commit(); } private void deleteDisabledActiveRules(DatabaseSession session) { @@ -118,9 +118,6 @@ public final class RegisterRules { for (ActiveRule deprecatedActiveRule : deprecatedActiveRules) { session.removeWithoutFlush(deprecatedActiveRule); } - if (!deprecatedActiveRules.isEmpty()) { - session.commit(); - } } private void updateRule(Rule persistedRule, Rule rule, DatabaseSession session) { @@ -173,6 +170,5 @@ public final class RegisterRules { rule.setEnabled(true); session.saveWithoutFlush(rule); } - session.commit(); } } -- cgit v1.2.3