From 1b73f465cb13fefa84858dcedf550a4e94a4c128 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2019 00:16:24 +0000 Subject: [PATCH 1/3] Bump slf4j-log4j12 from 1.7.27 to 1.7.28 in /search-services Bumps [slf4j-log4j12](https://github.com/qos-ch/slf4j) from 1.7.27 to 1.7.28. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_1.7.27...v_1.7.28) Signed-off-by: dependabot-preview[bot] --- search-services/alfresco-search/pom.xml | 2 +- search-services/alfresco-solrclient-lib/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/search-services/alfresco-search/pom.xml b/search-services/alfresco-search/pom.xml index 67bca4acd..1b073e2b1 100644 --- a/search-services/alfresco-search/pom.xml +++ b/search-services/alfresco-search/pom.xml @@ -81,7 +81,7 @@ org.slf4j slf4j-log4j12 - 1.7.27 + 1.7.28 diff --git a/search-services/alfresco-solrclient-lib/pom.xml b/search-services/alfresco-solrclient-lib/pom.xml index cac0093a8..830d57e5a 100644 --- a/search-services/alfresco-solrclient-lib/pom.xml +++ b/search-services/alfresco-solrclient-lib/pom.xml @@ -73,7 +73,7 @@ org.slf4j slf4j-log4j12 - 1.7.27 + 1.7.28 From 008bf6961c24ec89347c07d8525f1afb411333cc Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2019 00:16:57 +0000 Subject: [PATCH 2/3] Bump slf4j-api from 1.7.27 to 1.7.28 in /search-services Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 1.7.27 to 1.7.28. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_1.7.27...v_1.7.28) Signed-off-by: dependabot-preview[bot] --- search-services/alfresco-search/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/search-services/alfresco-search/pom.xml b/search-services/alfresco-search/pom.xml index 67bca4acd..9a4531b53 100644 --- a/search-services/alfresco-search/pom.xml +++ b/search-services/alfresco-search/pom.xml @@ -75,7 +75,7 @@ org.slf4j slf4j-api - 1.7.27 + 1.7.28 From 56c096500a4a94afa6ded9374b26214ea460db0f Mon Sep 17 00:00:00 2001 From: Tom Page Date: Tue, 27 Aug 2019 12:39:33 +0100 Subject: [PATCH 3/3] Revert "Merge branch 'fix/SEARCH-1827_BugsRankedD' into 'master'" This reverts commit 0e728d12e73d2e416aaff3dc63c5d6e1206578c8, reversing changes made to 97704e7f91aab2da809ade0f145206c9e0c6cf50. --- .../solr/AlfrescoCoreAdminHandler.java | 2 +- .../alfresco/solr/AlfrescoSolrDataModel.java | 3 +- .../alfresco/solr/SolrInformationServer.java | 19 ++---- .../component/AsyncBuildSuggestComponent.java | 6 +- .../RewriteFacetParametersComponent.java | 2 +- .../solr/component/TempFileWarningLogger.java | 9 +-- .../solr/query/AbstractSolrCachingScorer.java | 2 +- .../solr/query/MimetypeGroupingCollector.java | 6 +- .../alfresco/solr/query/Solr4QueryParser.java | 65 ++++++++++--------- .../solr/tracker/DateQuarterRouter.java | 9 +-- .../AlfrescoSolrClusteringComponent.java | 4 +- .../java/org/alfresco/solr/TrackerState.java | 23 ++----- .../alfresco/solr/client/SOLRAPIClient.java | 21 +++--- .../alfresco/solr/tracker/TrackerStats.java | 21 +++--- 14 files changed, 85 insertions(+), 107 deletions(-) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCoreAdminHandler.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCoreAdminHandler.java index f38eba6b3..559ec6855 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCoreAdminHandler.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCoreAdminHandler.java @@ -951,7 +951,7 @@ public class AlfrescoCoreAdminHandler extends CoreAdminHandler { if (maxNodeId >= midpoint) { - if(density >= 1 || density == 0) + if(density >= 1) { //This is fully dense shard. I'm not sure if it's possible to have more nodes on the shards //then the offset, but if it does happen don't expand. diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java index c28d7ae8b..f5a556a6e 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java @@ -1195,7 +1195,8 @@ public class AlfrescoSolrDataModel implements QueryConstants public void removeModel(QName modelQName) { - modelErrors.remove(getM2Model(modelQName).getName()); + // FIXME: this has no effect. The method should be changed (SEARCH-1482) + modelErrors.remove(modelQName); dictionaryDAO.removeModel(modelQName); } diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java index 838604cef..c4287b22a 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -957,10 +957,9 @@ public class SolrInformationServer implements InformationServer SolrIndexSearcher solrIndexSearcher = refCounted.get(); coreSummary.add("Searcher", solrIndexSearcher.getStatistics()); Map infoRegistry = core.getInfoRegistry(); - for (Entry infos : infoRegistry.entrySet()) + for (String key : infoRegistry.keySet()) { - SolrInfoMBean infoMBean = infos.getValue(); - String key = infos.getKey(); + SolrInfoMBean infoMBean = infoRegistry.get(key); if (key.equals("/alfresco")) { // TODO Do we really need to fixStats in solr4? @@ -2118,9 +2117,8 @@ public class SolrInformationServer implements InformationServer static void addPropertiesToDoc(Map properties, boolean isContentIndexedForNode, SolrInputDocument newDoc, SolrInputDocument cachedDoc, boolean transformContentFlag) { - for (Entry property : properties.entrySet()) + for (QName propertyQName : properties.keySet()) { - QName propertyQName = property.getKey(); newDoc.addField(FIELD_PROPERTIES, propertyQName.toString()); newDoc.addField(FIELD_PROPERTIES, propertyQName.getPrefixString()); @@ -3414,15 +3412,10 @@ public class SolrInformationServer implements InformationServer SolrQueryRequest request, UpdateRequestProcessor processor, LinkedHashSet stack) throws AuthenticationException, IOException, JSONException { - - // skipDescendantDocsForSpecificAspects is initialised on a synchronised method, so access must be also synchronised - synchronized (this) + if ((skipDescendantDocsForSpecificTypes && typesForSkippingDescendantDocs.contains(parentNodeMetaData.getType())) || + (skipDescendantDocsForSpecificAspects && shouldBeIgnoredByAnyAspect(parentNodeMetaData.getAspects()))) { - if ((skipDescendantDocsForSpecificTypes && typesForSkippingDescendantDocs.contains(parentNodeMetaData.getType())) || - (skipDescendantDocsForSpecificAspects && shouldBeIgnoredByAnyAspect(parentNodeMetaData.getAspects()))) - { - return; - } + return; } Set childIds = new HashSet<>(); diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/AsyncBuildSuggestComponent.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/AsyncBuildSuggestComponent.java index 1440ec5a5..efcb7d38d 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/AsyncBuildSuggestComponent.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/AsyncBuildSuggestComponent.java @@ -41,7 +41,6 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; @@ -473,9 +472,8 @@ public class AsyncBuildSuggestComponent extends SearchComponent implements SolrC @Override public long ramBytesUsed() { long sizeInBytes = 0; - for (Entry suggester : suggesters.entrySet()) - { - sizeInBytes += suggester.getValue().get(ASYNC_CACHE_KEY).ramBytesUsed(); + for (String key : suggesters.keySet()) { + sizeInBytes += suggesters.get(key).get(ASYNC_CACHE_KEY).ramBytesUsed(); } return sizeInBytes; } diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/RewriteFacetParametersComponent.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/RewriteFacetParametersComponent.java index 33de8a9fb..f52fe77f0 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/RewriteFacetParametersComponent.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/RewriteFacetParametersComponent.java @@ -91,7 +91,7 @@ public class RewriteFacetParametersComponent extends SearchComponent String rows = params.get("rows"); if(rows != null && !rows.isEmpty()) { - Integer row = Integer.valueOf(rows); + Integer row = new Integer(rows); // Avoid +1 in SOLR code which produces null:java.lang.NegativeArraySizeException at at org.apache.lucene.util.PriorityQueue.(PriorityQueue.java:56) if(row > 1000000) { diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/TempFileWarningLogger.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/TempFileWarningLogger.java index 6f885c3e6..b2b8d07f3 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/TempFileWarningLogger.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/component/TempFileWarningLogger.java @@ -19,6 +19,7 @@ package org.alfresco.solr.component; import java.io.IOException; +import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; @@ -52,9 +53,9 @@ public class TempFileWarningLogger log.debug("Looking for temp files matching " + glob + " in directory " + dir); } - try + try(DirectoryStream stream = Files.newDirectoryStream(dir, glob)) { - for (Path file : Files.newDirectoryStream(dir, glob)) + for (Path file : stream) { if (log.isDebugEnabled()) { @@ -73,9 +74,9 @@ public class TempFileWarningLogger public void removeFiles() { - try + try(DirectoryStream stream = Files.newDirectoryStream(dir, glob)) { - for (Path file : Files.newDirectoryStream(dir, glob)) + for (Path file : stream) { file.toFile().delete(); } diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/AbstractSolrCachingScorer.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/AbstractSolrCachingScorer.java index 157e5d1c9..b008175f4 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/AbstractSolrCachingScorer.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/AbstractSolrCachingScorer.java @@ -47,7 +47,7 @@ public abstract class AbstractSolrCachingScorer extends Scorer static { for(int i = 0; i < cache.length; i++) - cache[i] = Long.valueOf(i); + cache[i] = new Long(i); } } diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/MimetypeGroupingCollector.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/MimetypeGroupingCollector.java index 7253121fb..863d79a83 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/MimetypeGroupingCollector.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/MimetypeGroupingCollector.java @@ -20,7 +20,6 @@ package org.alfresco.solr.query; import java.io.IOException; import java.util.HashMap; -import java.util.Map.Entry; import org.alfresco.solr.AlfrescoSolrDataModel; import org.alfresco.solr.AlfrescoSolrDataModel.FieldUse; @@ -112,9 +111,10 @@ public class MimetypeGroupingCollector extends DelegatingCollector rb.rsp.add("analytics", analytics); NamedList fieldCounts = new NamedList<>(); analytics.add("mimetype()", fieldCounts); - for (Entry counter : counters.entrySet()) + for(String key : counters.keySet()) { - fieldCounts.add(counter.getKey(), counter.getValue().get()); + Counter counter = counters.get(key); + fieldCounts.add(key, counter.get()); } if(this.delegate instanceof DelegatingCollector) { diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java index c7dc07382..5b138c593 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java @@ -3301,35 +3301,44 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants protected String getToken(String field, String value, AnalysisMode analysisMode) throws ParseException { - - TokenStream source = getAnalyzer().tokenStream(field, new StringReader(value)); + try (TokenStream source = getAnalyzer().tokenStream(field, new StringReader(value))) + { + String tokenised = null; - CharTermAttribute cta = source.getAttribute(CharTermAttribute.class); - OffsetAttribute offsetAtt = source.getAttribute(OffsetAttribute.class); - TypeAttribute typeAtt = null; - if (source.hasAttribute(TypeAttribute.class)) + while (source.incrementToken()) + { + CharTermAttribute cta = source.getAttribute(CharTermAttribute.class); + OffsetAttribute offsetAtt = source.getAttribute(OffsetAttribute.class); + TypeAttribute typeAtt = null; + if (source.hasAttribute(TypeAttribute.class)) + { + typeAtt = source.getAttribute(TypeAttribute.class); + } + PositionIncrementAttribute posIncAtt = null; + if (source.hasAttribute(PositionIncrementAttribute.class)) + { + posIncAtt = source.getAttribute(PositionIncrementAttribute.class); + } + PackedTokenAttributeImpl token = new PackedTokenAttributeImpl(); + token.setEmpty().copyBuffer(cta.buffer(), 0, cta.length()); + token.setOffset(offsetAtt.startOffset(), offsetAtt.endOffset()); + if (typeAtt != null) + { + token.setType(typeAtt.type()); + } + if (posIncAtt != null) + { + token.setPositionIncrement(posIncAtt.getPositionIncrement()); + } + + tokenised = token.toString(); + } + return tokenised; + } catch (IOException e) { - typeAtt = source.getAttribute(TypeAttribute.class); - } - PositionIncrementAttribute posIncAtt = null; - if (source.hasAttribute(PositionIncrementAttribute.class)) - { - posIncAtt = source.getAttribute(PositionIncrementAttribute.class); - } - PackedTokenAttributeImpl token = new PackedTokenAttributeImpl(); - token.setEmpty().copyBuffer(cta.buffer(), 0, cta.length()); - token.setOffset(offsetAtt.startOffset(), offsetAtt.endOffset()); - if (typeAtt != null) - { - token.setType(typeAtt.type()); - } - if (posIncAtt != null) - { - token.setPositionIncrement(posIncAtt.getPositionIncrement()); + throw new ParseException("IO" + e.getMessage()); } - return token.toString(); - } @Override @@ -5463,13 +5472,11 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants } protected BytesRef analyzeMultitermTerm(String field, String part, Analyzer analyzerIn) { - if (analyzerIn == null) analyzerIn = getAnalyzer(); - try - { + try (TokenStream source = analyzerIn.tokenStream(field, part)) { + source.reset(); - TokenStream source = analyzerIn.tokenStream(field, part); TermToBytesRefAttribute termAtt = source.getAttribute(TermToBytesRefAttribute.class); if (!source.incrementToken()) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/DateQuarterRouter.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/DateQuarterRouter.java index c3c32ad2e..8a446c880 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/DateQuarterRouter.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/DateQuarterRouter.java @@ -55,13 +55,6 @@ public class DateQuarterRouter implements DocRouter calendar.setTime(date); int month = calendar.get(Calendar.MONTH); int year = calendar.get(Calendar.YEAR); - - // Avoid using Math.ceil with Integer - int countMonths = ((year * 12) + (month+1)); - int grouping = 3; - int ceilGroupInstance = countMonths / grouping + ((countMonths % grouping == 0) ? 0 : 1); - - return ceilGroupInstance % numShards == shardInstance; - + return Math.ceil(((year * 12) + (month+1)) / 3) % numShards == shardInstance; } } \ No newline at end of file diff --git a/search-services/alfresco-search/src/main/java/org/apache/solr/handler/component/AlfrescoSolrClusteringComponent.java b/search-services/alfresco-search/src/main/java/org/apache/solr/handler/component/AlfrescoSolrClusteringComponent.java index 417e03d42..62a3f47c3 100644 --- a/search-services/alfresco-search/src/main/java/org/apache/solr/handler/component/AlfrescoSolrClusteringComponent.java +++ b/search-services/alfresco-search/src/main/java/org/apache/solr/handler/component/AlfrescoSolrClusteringComponent.java @@ -280,7 +280,7 @@ public class AlfrescoSolrClusteringComponent extends SearchComponent implements list.add(doc); if (ids != null) { - ids.put(doc, Integer.valueOf(docid)); + ids.put(doc, new Integer(docid)); } } return list; @@ -356,7 +356,7 @@ public class AlfrescoSolrClusteringComponent extends SearchComponent implements /** * @return Expose for tests. */ - Map getSearchClusteringEnginesView() { + Map getSearchClusteringEngines() { return searchClusteringEnginesView; } diff --git a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/TrackerState.java b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/TrackerState.java index 8efed9b1b..d585a0c0b 100644 --- a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/TrackerState.java +++ b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/TrackerState.java @@ -26,8 +26,6 @@ package org.alfresco.solr; -import java.util.concurrent.atomic.AtomicInteger; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,21 +64,8 @@ public class TrackerState private volatile boolean checkedLastAclTransactionTime = false; private volatile boolean checkedLastTransactionTime = false; - private volatile boolean check = false; - // Handle Thread Safe operations - private volatile TrackerCyclesInteger trackerCycles; - class TrackerCyclesInteger - { - private AtomicInteger value = new AtomicInteger(0); - private void increase() - { - value.incrementAndGet(); - } - private int getValue() - { - return value.get(); - } - } + private volatile boolean check = false; + private volatile int trackerCycles; private long timeToStopIndexing; private long lastGoodChangeSetCommitTimeInIndex; @@ -252,13 +237,13 @@ public class TrackerState public int getTrackerCycles() { - return this.trackerCycles.getValue(); + return this.trackerCycles; } public synchronized void incrementTrackerCycles() { log.debug("incrementTrackerCycles from :" + trackerCycles); - this.trackerCycles.increase(); + this.trackerCycles++; log.debug("incremented TrackerCycles to :" + trackerCycles); } diff --git a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java index 136d5ddde..d1a19a51a 100644 --- a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java +++ b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java @@ -38,7 +38,6 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import org.alfresco.error.AlfrescoRuntimeException; @@ -742,7 +741,7 @@ public class SOLRAPIClient String localeStr = o.has("locale") && !o.isNull("locale") ? o.getString("locale") : null; Locale locale = (o.has("locale") && !o.isNull("locale") ? deserializer.deserializeValue(Locale.class, localeStr) : null); - long size = o.has("size") && !o.isNull("size") ? o.getLong("size") : 0; + Long size = o.has("size") && !o.isNull("size") ? o.getLong("size") : null; String encoding = o.has("encoding") && !o.isNull("encoding") ? o.getString("encoding") : null; String mimetype = o.has("mimetype") && !o.isNull("mimetype") ? o.getString("mimetype") : null; @@ -1248,13 +1247,17 @@ public class SOLRAPIClient this.namespaceDAO = namespaceDAO; // add all default converters to this converter - for (Entry, Map, Converter>> source : DefaultTypeConverter.INSTANCE.getConverters().entrySet()) - { - for (Entry, Converter> dest : source.getValue().entrySet()) - { - instance.addConverter((Class) source.getKey(), (Class) dest.getKey(), dest.getValue()); - } - } + // TODO find a better way of doing this + Map, Map, Converter>> converters = DefaultTypeConverter.INSTANCE.getConverters(); + for(Class source : converters.keySet()) + { + Map, Converter> converters1 = converters.get(source); + for(Class dest : converters1.keySet()) + { + Converter converter = converters1.get(dest); + instance.addConverter(source, dest, converter); + } + } // dates instance.addConverter(String.class, Date.class, new TypeConverter.Converter() diff --git a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/tracker/TrackerStats.java b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/tracker/TrackerStats.java index 93291cad9..6b5f925bf 100644 --- a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/tracker/TrackerStats.java +++ b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/tracker/TrackerStats.java @@ -29,12 +29,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import javax.annotation.concurrent.NotThreadSafe; - +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + import org.alfresco.solr.InformationServerCollectionProvider; import org.alfresco.solr.adapters.ISimpleOrderedMap; import org.alfresco.util.Pair; @@ -286,10 +283,11 @@ public class TrackerStats map.add("StdDev", getStandardDeviation()); if (incdludeDetail) { - for (Entry copy : copies.entrySet()) - { - map.add(copy.getKey(), copy.getValue().getNamedList(includeHist, includeValues)); - } + for (String key : copies.keySet()) + { + IncrementalStats value = copies.get(key); + map.add(key, value.getNamedList(includeHist, includeValues)); + } } return map; @@ -384,7 +382,6 @@ public class TrackerStats } - @NotThreadSafe public static class IncrementalStats { Date start = new Date(); @@ -772,7 +769,7 @@ public class TrackerStats { IncrementalStats copy = new IncrementalStats(this.scale, this.buckets, this.server); copy.start = this.start; - copy.max = this.getMax(); + copy.max = this.max; copy.min = this.min; copy.moments[0] = this.moments[0]; copy.moments[1] = this.moments[1];