diff --git a/Frameworks/Core/ERExtensions/Sources/er/extensions/statistics/ERXStatisticsStore.java b/Frameworks/Core/ERExtensions/Sources/er/extensions/statistics/ERXStatisticsStore.java index 2ff847d405e..de28f0be5ce 100644 --- a/Frameworks/Core/ERExtensions/Sources/er/extensions/statistics/ERXStatisticsStore.java +++ b/Frameworks/Core/ERExtensions/Sources/er/extensions/statistics/ERXStatisticsStore.java @@ -26,10 +26,10 @@ import er.extensions.eof.ERXObjectStoreCoordinator; import er.extensions.foundation.ERXProperties; import er.extensions.statistics.store.ERXDumbStatisticsStoreListener; -import er.extensions.statistics.store.IERXStatisticsStoreListener; import er.extensions.statistics.store.ERXEmptyRequestDescription; import er.extensions.statistics.store.ERXNormalRequestDescription; import er.extensions.statistics.store.IERXRequestDescription; +import er.extensions.statistics.store.IERXStatisticsStoreListener; /** * Enhances the normal stats store with a bunch of useful things which get @@ -123,6 +123,22 @@ protected void endTimer(WOContext aContext, String aString) { requestTime = System.currentTimeMillis() - time(); } + Thread currentThread = Thread.currentThread(); + Map traces = _fatalTraces.remove(currentThread); + Map names = _fatalTracesNames.remove(currentThread); + if (traces == null) { + traces = _errorTraces.remove(currentThread); + names = _errorTracesNames.remove(currentThread); + } + if (traces == null) { + traces = _warnTraces.remove(currentThread); + names = _warnTracesNames.remove(currentThread); + } + + synchronized (_requestThreads) { + _requestThreads.remove(Thread.currentThread()); + } + // Don't get the traces string if we have already logged all // of the stacks within the last 10s. All of this logging // could just makes it worse for an application that is @@ -130,7 +146,7 @@ protected void endTimer(WOContext aContext, String aString) { String trace = " - (skipped stack traces)"; long currentTime = System.currentTimeMillis(); if (currentTime - _lastLog > 10000) { - trace = stringFromTraces(); + trace = stringFromTracesAndNames(traces, names); _lastLog = currentTime; } @@ -152,29 +168,6 @@ else if (requestTime > _maximumRequestWarnTime) { } } - private String stringFromTraces() { - String result; - Thread currentThread = Thread.currentThread(); - Map traces = _fatalTraces.remove(currentThread); - Map names = _fatalTracesNames.remove(currentThread); - if (traces == null) { - traces = _errorTraces.remove(currentThread); - names = _errorTracesNames.remove(currentThread); - } - if (traces == null) { - traces = _warnTraces.remove(currentThread); - names = _warnTracesNames.remove(currentThread); - } - - result = stringFromTracesAndNames(traces, names); - - synchronized (_requestThreads) { - _requestThreads.remove(Thread.currentThread()); - } - - return result; - } - private String stringFromTracesAndNames(Map traces, Map names) { String trace = null; if (traces != null) {