From 69076e6d1e9122c8d4714f3d83bc9494c86021cc Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Wed, 21 May 2014 12:10:47 +0200 Subject: [PATCH] DAOv.2 - Implicit refresh for Index classes using ES-NRT --- .../java/org/sonar/core/cluster/QueueAction.java | 2 +- .../java/org/sonar/server/rule2/RuleService.java | 5 ----- .../java/org/sonar/server/search/BaseIndex.java | 7 ++++++- .../sonar/server/search/action/IndexAction.java | 11 +++++++++++ .../sonar/server/rule2/RuleServiceMediumTest.java | 7 ++----- .../server/rule2/ws/RulesWebServiceTest.java | 15 ++------------- 6 files changed, 22 insertions(+), 25 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/cluster/QueueAction.java b/sonar-core/src/main/java/org/sonar/core/cluster/QueueAction.java index 60b31ee6baa..ed4cd6bf061 100644 --- a/sonar-core/src/main/java/org/sonar/core/cluster/QueueAction.java +++ b/sonar-core/src/main/java/org/sonar/core/cluster/QueueAction.java @@ -23,7 +23,7 @@ import java.util.concurrent.CountDownLatch; public abstract class QueueAction implements Runnable { - private CountDownLatch latch; + protected CountDownLatch latch; public QueueAction(CountDownLatch latch){ this.latch = latch; diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java b/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java index fbedb8a3f89..a9c4bf867d1 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java @@ -150,9 +150,4 @@ public class RuleService implements ServerComponent { private void checkAdminPermission(UserSession userSession) { userSession.checkGlobalPermission(GlobalPermissions.QUALITY_PROFILE_ADMIN); } - - public RuleService refresh() { - this.index.refresh(); - return this; - } } diff --git a/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java b/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java index ea3abff3150..4283af1c6ca 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java @@ -131,7 +131,12 @@ public abstract class BaseIndex, K extends Serializable> @Override public void refresh() { - getClient().admin().indices().prepareRefresh(this.getIndexName()).get(); + getClient() + .admin() + .indices() + .prepareRefresh(this.getIndexName()) + .setForce(true) + .get(); } /* Search methods */ diff --git a/sonar-server/src/main/java/org/sonar/server/search/action/IndexAction.java b/sonar-server/src/main/java/org/sonar/server/search/action/IndexAction.java index 8d8a1ade251..ba5fc3fce1a 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/action/IndexAction.java +++ b/sonar-server/src/main/java/org/sonar/server/search/action/IndexAction.java @@ -55,6 +55,17 @@ public abstract class IndexAction extends QueueAction { this.method = method; } + @Override + public void run(){ + this.doExecute(); + if(method.equals(Method.UPDATE) || method.equals(Method.INSERT)){ + index.refresh(); + } + if(latch != null){ + latch.countDown(); + } + } + @Override public abstract void doExecute(); diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/RuleServiceMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/RuleServiceMediumTest.java index 02e20aeef1d..daca32ff603 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/RuleServiceMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/RuleServiceMediumTest.java @@ -95,10 +95,7 @@ public class RuleServiceMediumTest { service.setTags(rule2, Sets.newHashSet("bug", "security")); - // verify that tags are indexed in es - - service.refresh(); - + // verify that tags are indexed in index Set tags = service.listTags(); assertThat(tags).containsOnly("security", "bug"); } @@ -221,7 +218,7 @@ public class RuleServiceMediumTest { tester.get(ActiveRuleDao.class).insert(activeRule3, dbSession); dbSession.commit(); - service.refresh(); + // 2. test in DB diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java index 6e122b141e0..96eb2e46d29 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java @@ -39,7 +39,6 @@ import org.sonar.core.qualityprofile.db.QualityProfileDto; import org.sonar.core.rule.RuleDto; import org.sonar.core.rule.RuleParamDto; import org.sonar.server.qualityprofile.persistence.ActiveRuleDao; -import org.sonar.server.rule2.RuleService; import org.sonar.server.rule2.persistence.RuleDao; import org.sonar.server.tester.ServerTester; import org.sonar.server.user.MockUserSession; @@ -109,8 +108,6 @@ public class RulesWebServiceTest { ruleDao.insert(newRuleDto(RuleKey.of("javascript", "S002")), session); session.commit(); - tester.get(RuleService.class).refresh(); - MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); WsTester.Result result = request.execute(); @@ -128,7 +125,6 @@ public class RulesWebServiceTest { .setDefaultSubCharacteristicId(1), session); session.commit(); - tester.get(RuleService.class).refresh(); MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); @@ -151,8 +147,6 @@ public class RulesWebServiceTest { session.commit(); - tester.get(RuleService.class).refresh(); - MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); @@ -183,7 +177,6 @@ public class RulesWebServiceTest { tester.get(ActiveRuleDao.class).insert(activeRule2, session); session.commit(); - tester.get(RuleService.class).refresh(); MockUserSession.set(); @@ -232,7 +225,6 @@ public class RulesWebServiceTest { tester.get(ActiveRuleDao.class).addParam(activeRule, activeRuleParam2, session); session.commit(); - tester.get(RuleService.class).refresh(); MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); @@ -260,8 +252,6 @@ public class RulesWebServiceTest { ruleDao.insert(rule2, session); session.commit(); - tester.get(RuleService.class).refresh(); - MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "tags"); @@ -280,7 +270,6 @@ public class RulesWebServiceTest { ruleDao.insert(rule, session); session.commit(); - tester.get(RuleService.class).refresh(); MockUserSession.set(); @@ -298,11 +287,11 @@ public class RulesWebServiceTest { .setSystemTags(ImmutableSet.of("tag2")), session); session.commit(); - tester.get(RuleService.class).refresh(); + MockUserSession.set(); WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); - request.setParam("tags","tag1"); + request.setParam("tags", "tag1"); WsTester.Result result = request.execute(); result.assertJson(this.getClass(), "filter_by_tags.json"); } -- 2.39.5