From 42eebf9ad83392f076628e5d63a32910ee52fa46 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Tue, 9 Aug 2016 13:40:08 +0000 Subject: [PATCH] Merged 5.2.N (5.2.1) to HEAD (5.2) 128737 ahind: Merged 5.1.N (5.1.2) to 5.2.N (5.2.1) 128736 ahind: Merged 5.1.0 (5.1.0.9) to 5.1.N (5.1.2) 128469 ahind: MNT-16445: Inconsistent behavior of Site File Type Breakdown dashlet in a sharded environment git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@129277 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../search/impl/solr/SolrQueryHTTPClient.java | 26 +++++++++++++++++-- .../impl/solr/SolrQueryHTTPClientTest.java | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java index 7685df72a1..14aea6c167 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java @@ -275,7 +275,7 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean Pair httpClientAndBaseUrl = mapping.getHttpClientAndBaseUrl(); HttpClient httpClient = httpClientAndBaseUrl.getFirst(); - String url = buildStatsUrl(searchParameters, httpClientAndBaseUrl.getSecond(), locale); + String url = buildStatsUrl(searchParameters, httpClientAndBaseUrl.getSecond(), locale, mapping); JSONObject body = buildStatsBody(searchParameters, tenantService.getCurrentUserDomain(), locale); if(httpClient == null) @@ -312,7 +312,7 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean } } - protected String buildStatsUrl(StatsParameters searchParameters, String baseUrl, Locale locale) throws UnsupportedEncodingException + protected String buildStatsUrl(StatsParameters searchParameters, String baseUrl, Locale locale, SolrStoreMappingWrapper mapping) throws UnsupportedEncodingException { URLCodec encoder = new URLCodec(); StringBuilder url = new StringBuilder(); @@ -337,6 +337,28 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean url.append("&stats.").append(entry.getKey()).append("=").append(encoder.encode(entry.getValue(), "UTF-8")); } + if((mapping != null) && ((searchParameters.getStores().size() > 1) || (mapping.isSharded()))) + { + boolean requiresSeparator = false; + url.append("&shards="); + for(StoreRef storeRef : searchParameters.getStores()) + { + SolrStoreMappingWrapper storeMapping = extractMapping(storeRef); + + if(requiresSeparator) + { + url.append(','); + } + else + { + requiresSeparator = true; + } + + url.append(storeMapping.getShards()); + + } + } + return url.toString(); } diff --git a/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java b/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java index e786c9ee41..a5a2662d74 100644 --- a/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java +++ b/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java @@ -74,7 +74,7 @@ public class SolrQueryHTTPClientTest SolrQueryHTTPClient client = new SolrQueryHTTPClient(); client.setLanguageMappings(languageMappings); StatsParameters params = getParameters(); - String url = client.buildStatsUrl(params, "http://localhost:8080/solr/alfresco/select", Locale.CANADA_FRENCH); + String url = client.buildStatsUrl(params, "http://localhost:8080/solr/alfresco/select", Locale.CANADA_FRENCH, null); assertNotNull(url); assertTrue(url.contains("locale=fr_CA")); assertTrue(url.contains("sort=contentsize"));