You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by an...@apache.org on 2016/05/03 11:55:30 UTC
[5/6] activemq-artemis git commit: Individualizing loggers on journal
Individualizing loggers on journal
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/7bebe507
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/7bebe507
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/7bebe507
Branch: refs/heads/master
Commit: 7bebe507cfaaf86bb9bf27ba4bb0f387e7ff87d2
Parents: f0df9d8
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Apr 28 14:26:51 2016 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Apr 28 14:37:23 2016 -0400
----------------------------------------------------------------------
.../core/io/aio/AIOSequentialFileFactory.java | 14 +---
.../artemis/core/io/util/FileIOUtil.java | 5 +-
.../journal/impl/JournalFilesRepository.java | 51 ++++++------
.../artemis/core/journal/impl/JournalImpl.java | 82 +++++++++-----------
.../artemis/core/journal/impl/Reclaimer.java | 18 ++---
5 files changed, 73 insertions(+), 97 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7bebe507/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFileFactory.java
----------------------------------------------------------------------
diff --git a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFileFactory.java b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFileFactory.java
index 93c09ee..2a79e6e 100644
--- a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFileFactory.java
+++ b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFileFactory.java
@@ -33,10 +33,11 @@ import org.apache.activemq.artemis.jlibaio.LibaioFile;
import org.apache.activemq.artemis.jlibaio.SubmitInfo;
import org.apache.activemq.artemis.jlibaio.util.CallbackCache;
import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
+import org.jboss.logging.Logger;
public final class AIOSequentialFileFactory extends AbstractSequentialFileFactory {
- private static final boolean trace = ActiveMQJournalLogger.LOGGER.isTraceEnabled();
+ private static final Logger logger = Logger.getLogger(AIOSequentialFileFactory.class);
private final ReuseBuffersController buffersControl = new ReuseBuffersController();
@@ -52,13 +53,6 @@ public final class AIOSequentialFileFactory extends AbstractSequentialFileFactor
private static final String AIO_TEST_FILE = ".aio-test";
- // This method exists just to make debug easier.
- // I could replace log.trace by log.info temporarily while I was debugging
- // Journal
- private static void trace(final String message) {
- ActiveMQJournalLogger.LOGGER.trace(message);
- }
-
public AIOSequentialFileFactory(final File journalDir, int maxIO) {
this(journalDir, ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, ArtemisConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_AIO, maxIO, false, null);
}
@@ -398,8 +392,8 @@ public final class AIOSequentialFileFactory extends AbstractSequentialFileFactor
// This is being done this way as we don't need another Timeout Thread
// just to cleanup this
if (bufferSize > 0 && System.currentTimeMillis() - bufferReuseLastTime > 10000) {
- if (AIOSequentialFileFactory.trace) {
- AIOSequentialFileFactory.trace("Clearing reuse buffers queue with " + reuseBuffersQueue.size() +
+ if (logger.isTraceEnabled()) {
+ logger.trace("Clearing reuse buffers queue with " + reuseBuffersQueue.size() +
" elements");
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7bebe507/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/util/FileIOUtil.java
----------------------------------------------------------------------
diff --git a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/util/FileIOUtil.java b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/util/FileIOUtil.java
index f9d3ab7..70ddb24 100644
--- a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/util/FileIOUtil.java
+++ b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/util/FileIOUtil.java
@@ -24,8 +24,7 @@ import org.jboss.logging.Logger;
public class FileIOUtil {
- private static final Logger logger = Logger.getLogger(Logger.class);
- private static final boolean isTrace = logger.isTraceEnabled();
+ private static final Logger logger = Logger.getLogger(FileIOUtil.class);
public static void copyData(SequentialFile from, SequentialFile to, ByteBuffer buffer) throws Exception {
@@ -50,7 +49,7 @@ public class FileIOUtil {
buffer.clear();
int bytesRead = from.read(buffer);
- if (isTrace) {
+ if (logger.isTraceEnabled()) {
logger.trace("appending " + bytesRead + " bytes on " + to.getFileName());
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7bebe507/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalFilesRepository.java
----------------------------------------------------------------------
diff --git a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalFilesRepository.java b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalFilesRepository.java
index 5eb2692..af01b86 100644
--- a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalFilesRepository.java
+++ b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalFilesRepository.java
@@ -36,6 +36,7 @@ import org.apache.activemq.artemis.core.io.SequentialFile;
import org.apache.activemq.artemis.core.io.SequentialFileFactory;
import org.apache.activemq.artemis.journal.ActiveMQJournalBundle;
import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
+import org.jboss.logging.Logger;
/**
* This is a helper class for the Journal, which will control access to dataFiles, openedFiles and freeFiles
@@ -43,7 +44,7 @@ import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
*/
public class JournalFilesRepository {
- private static final boolean trace = ActiveMQJournalLogger.LOGGER.isTraceEnabled();
+ private static final Logger logger = Logger.getLogger(JournalFilesRepository.class);
/**
* Used to debug the consistency of the journal ordering.
@@ -52,13 +53,6 @@ public class JournalFilesRepository {
*/
private static final boolean CHECK_CONSISTENCE = false;
- // This method exists just to make debug easier.
- // I could replace log.trace by log.info temporarily while I was debugging
- // Journal
- private static void trace(final String message) {
- ActiveMQJournalLogger.LOGGER.trace(message);
- }
-
private final SequentialFileFactory fileFactory;
private final JournalImpl journal;
@@ -365,8 +359,8 @@ public class JournalFilesRepository {
else if (!checkDelete || (freeFilesCount.get() + dataFiles.size() + 1 + openedFiles.size() < poolSize) || (poolSize < 0)) {
// Re-initialise it
- if (JournalFilesRepository.trace) {
- JournalFilesRepository.trace("Adding free file " + file);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Adding free file " + file);
}
JournalFile jf = reinitializeFile(file);
@@ -379,15 +373,14 @@ public class JournalFilesRepository {
freeFilesCount.getAndIncrement();
}
else {
- if (trace) {
- ActiveMQJournalLogger.LOGGER.trace("DataFiles.size() = " + dataFiles.size());
- ActiveMQJournalLogger.LOGGER.trace("openedFiles.size() = " + openedFiles.size());
- ActiveMQJournalLogger.LOGGER.trace("minfiles = " + minFiles + ", poolSize = " + poolSize);
- ActiveMQJournalLogger.LOGGER.trace("Free Files = " + freeFilesCount.get());
- ActiveMQJournalLogger.LOGGER.trace("File " + file +
- " being deleted as freeFiles.size() + dataFiles.size() + 1 + openedFiles.size() (" +
- (freeFilesCount.get() + dataFiles.size() + 1 + openedFiles.size()) +
- ") < minFiles (" + minFiles + ")");
+ if (logger.isTraceEnabled()) {
+ logger.trace("DataFiles.size() = " + dataFiles.size());
+ logger.trace("openedFiles.size() = " + openedFiles.size());
+ logger.trace("minfiles = " + minFiles + ", poolSize = " + poolSize);
+ logger.trace("Free Files = " + freeFilesCount.get());
+ logger.trace("File " + file + " being deleted as freeFiles.size() + dataFiles.size() + 1 + openedFiles.size() (" +
+ (freeFilesCount.get() + dataFiles.size() + 1 + openedFiles.size()) +
+ ") < minFiles (" + minFiles + ")");
}
file.getFile().delete();
}
@@ -421,8 +414,8 @@ public class JournalFilesRepository {
* @throws ActiveMQIOErrorException In case the file could not be opened
*/
public JournalFile openFile() throws InterruptedException, ActiveMQIOErrorException {
- if (JournalFilesRepository.trace) {
- JournalFilesRepository.trace("enqueueOpenFile with openedFiles.size=" + openedFiles.size());
+ if (logger.isTraceEnabled()) {
+ logger.trace("enqueueOpenFile with openedFiles.size=" + openedFiles.size());
}
if (openFilesExecutor == null) {
@@ -441,8 +434,8 @@ public class JournalFilesRepository {
throw ActiveMQJournalBundle.BUNDLE.fileNotOpened();
}
- if (JournalFilesRepository.trace) {
- JournalFilesRepository.trace("Returning file " + nextFile);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Returning file " + nextFile);
}
return nextFile;
@@ -454,8 +447,8 @@ public class JournalFilesRepository {
public void pushOpenedFile() throws Exception {
JournalFile nextOpenedFile = takeFile(true, true, true, false);
- if (JournalFilesRepository.trace) {
- JournalFilesRepository.trace("pushing openFile " + nextOpenedFile);
+ if (logger.isTraceEnabled()) {
+ logger.trace("pushing openFile " + nextOpenedFile);
}
if (!openedFiles.offer(nextOpenedFile)) {
@@ -580,8 +573,8 @@ public class JournalFilesRepository {
final String fileName = createFileName(tmpCompact, fileID);
- if (JournalFilesRepository.trace) {
- JournalFilesRepository.trace("Creating file " + fileName);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Creating file " + fileName);
}
String tmpFileName = fileName + ".tmp";
@@ -600,8 +593,8 @@ public class JournalFilesRepository {
sequentialFile.close();
- if (JournalFilesRepository.trace) {
- JournalFilesRepository.trace("Renaming file " + tmpFileName + " as " + fileName);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Renaming file " + tmpFileName + " as " + fileName);
}
sequentialFile.renameTo(fileName);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7bebe507/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
----------------------------------------------------------------------
diff --git a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
index ef6de60..e19e728 100644
--- a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
+++ b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
@@ -69,6 +69,7 @@ import org.apache.activemq.artemis.journal.ActiveMQJournalBundle;
import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
import org.apache.activemq.artemis.utils.ConcurrentHashSet;
import org.apache.activemq.artemis.utils.DataConstants;
+import org.jboss.logging.Logger;
/**
* <p>A circular log implementation.</p>
@@ -84,22 +85,7 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
private static final int[] COMPATIBLE_VERSIONS = new int[]{1};
// Static --------------------------------------------------------
- private static final boolean trace = ActiveMQJournalLogger.LOGGER.isTraceEnabled();
-
- // This is useful at debug time...
- // if you set it to true, all the appends, deletes, rollbacks, commits, etc.. are sent to System.out
- private static final boolean TRACE_RECORDS = trace;
-
- // This method exists just to make debug easier.
- // I could replace log.trace by log.info temporarily while I was debugging
- // Journal
- private static void trace(final String message) {
- ActiveMQJournalLogger.LOGGER.trace(message);
- }
-
- private static void traceRecord(final String message) {
- ActiveMQJournalLogger.LOGGER.trace(message);
- }
+ private static final Logger logger = Logger.getLogger(JournalImpl.class);
// The sizes of primitive types
@@ -550,7 +536,7 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
preparedTransactionExtraDataSize)) {
// Avoid a buffer overflow caused by damaged data... continue
// scanning for more pendingTransactions...
- JournalImpl.trace("Record at position " + pos +
+ logger.trace("Record at position " + pos +
" recordType = " +
recordType +
" file:" +
@@ -583,7 +569,7 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
// This is like testing a hash for the record. (We could replace the
// checkSize by some sort of calculated hash)
if (checkSize != variableSize + recordSize + preparedTransactionExtraDataSize) {
- JournalImpl.trace("Record at position " + pos +
+ logger.trace("Record at position " + pos +
" recordType = " +
recordType +
" possible transactionID = " +
@@ -722,10 +708,11 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(addRecord, false, sync, null, callback);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendAddRecord::id=" + id +
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendAddRecord::id=" + id +
", userRecordType=" +
recordType +
+ ", record = " + record +
", usedFile = " +
usedFile);
}
@@ -766,10 +753,11 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(updateRecord, false, sync, null, callback);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendUpdateRecord::id=" + id +
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendUpdateRecord::id=" + id +
", userRecordType=" +
recordType +
+ ", record = " + record +
", usedFile = " +
usedFile);
}
@@ -820,8 +808,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(deleteRecord, false, sync, null, callback);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendDeleteRecord::id=" + id + ", usedFile = " + usedFile);
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendDeleteRecord::id=" + id + ", usedFile = " + usedFile);
}
// record== null here could only mean there is a compactor, and computing the delete should be done after
@@ -857,12 +845,13 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(addRecord, false, false, tx, null);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendAddRecordTransactional:txID=" + txID +
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendAddRecordTransactional:txID=" + txID +
",id=" +
id +
", userRecordType=" +
recordType +
+ ", record = " + record +
", usedFile = " +
usedFile);
}
@@ -902,12 +891,13 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(updateRecordTX, false, false, tx, null);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendUpdateRecordTransactional::txID=" + txID +
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendUpdateRecordTransactional::txID=" + txID +
",id=" +
id +
", userRecordType=" +
recordType +
+ ", record = " + record +
", usedFile = " +
usedFile);
}
@@ -936,8 +926,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(deleteRecordTX, false, false, tx, null);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendDeleteRecordTransactional::txID=" + txID +
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendDeleteRecordTransactional::txID=" + txID +
", id=" +
id +
", usedFile = " +
@@ -986,8 +976,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(prepareRecord, true, sync, tx, callback);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendPrepareRecord::txID=" + txID + ", usedFile = " + usedFile);
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendPrepareRecord::txID=" + txID + ", usedFile = " + usedFile);
}
tx.prepare(usedFile);
@@ -1032,8 +1022,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
synchronized (lockAppend) {
JournalFile usedFile = appendRecord(commitRecord, true, sync, tx, callback);
- if (JournalImpl.TRACE_RECORDS) {
- JournalImpl.traceRecord("appendCommitRecord::txID=" + txID + ", usedFile = " + usedFile);
+ if (logger.isTraceEnabled()) {
+ logger.trace("appendCommitRecord::txID=" + txID + ", usedFile = " + usedFile);
}
tx.commit(usedFile);
@@ -1301,7 +1291,7 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
filesRepository.clearDataFiles();
if (dataFilesToProcess.size() == 0) {
- trace("Finishing compacting, nothing to process");
+ logger.trace("Finishing compacting, nothing to process");
return;
}
@@ -1367,14 +1357,14 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
// Restore compacted dataFiles
for (int i = newDatafiles.size() - 1; i >= 0; i--) {
JournalFile fileToAdd = newDatafiles.get(i);
- if (JournalImpl.trace) {
- JournalImpl.trace("Adding file " + fileToAdd + " back as datafile");
+ if (logger.isTraceEnabled()) {
+ logger.trace("Adding file " + fileToAdd + " back as datafile");
}
filesRepository.addDataFileOnTop(fileToAdd);
}
- if (JournalImpl.trace) {
- JournalImpl.trace("There are " + filesRepository.getDataFilesCount() + " datafiles Now");
+ if (logger.isTraceEnabled()) {
+ logger.trace("There are " + filesRepository.getDataFilesCount() + " datafiles Now");
}
// Replay pending commands (including updates, deletes and commits)
@@ -1390,8 +1380,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
// that happened during the compacting
for (JournalTransaction newTransaction : localCompactor.getNewTransactions().values()) {
- if (JournalImpl.trace) {
- JournalImpl.trace("Merging pending transaction " + newTransaction + " after compacting the journal");
+ if (logger.isTraceEnabled()) {
+ logger.trace("Merging pending transaction " + newTransaction + " after compacting the journal");
}
JournalTransaction liveTransaction = transactions.get(newTransaction.getId());
if (liveTransaction != null) {
@@ -1513,7 +1503,7 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
final AtomicLong maxID = new AtomicLong(-1);
for (final JournalFile file : orderedFiles) {
- JournalImpl.trace("Loading file " + file.getFile().getFileName());
+ logger.trace("Loading file " + file.getFile().getFileName());
final AtomicBoolean hasData = new AtomicBoolean(false);
@@ -1824,8 +1814,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
for (JournalFile file : filesRepository.getDataFiles()) {
if (file.isCanReclaim()) {
// File can be reclaimed or deleted
- if (JournalImpl.trace) {
- JournalImpl.trace("Reclaiming file " + file);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Reclaiming file " + file);
}
filesRepository.removeDataFile(file);
@@ -2800,8 +2790,8 @@ public class JournalImpl extends JournalBase implements TestableJournal, Journal
scheduleReclaim();
}
- if (trace) {
- ActiveMQJournalLogger.LOGGER.trace("Moving next file " + currentFile);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Moving next file " + currentFile);
}
fileFactory.activateBuffer(currentFile.getFile());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7bebe507/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/Reclaimer.java
----------------------------------------------------------------------
diff --git a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/Reclaimer.java b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/Reclaimer.java
index 0f55962..2b028ab 100644
--- a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/Reclaimer.java
+++ b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/Reclaimer.java
@@ -16,7 +16,7 @@
*/
package org.apache.activemq.artemis.core.journal.impl;
-import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
+import org.jboss.logging.Logger;
/**
* <p>The journal consists of an ordered list of journal files Fn where {@code 0 <= n <= N}</p>
@@ -34,10 +34,10 @@ import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
*/
public class Reclaimer {
- private static boolean trace = ActiveMQJournalLogger.LOGGER.isTraceEnabled();
+ private static final Logger logger = Logger.getLogger(Reclaimer.class);
private static void trace(final String message) {
- ActiveMQJournalLogger.LOGGER.trace(message);
+ logger.trace(message);
}
public void scan(final JournalFile[] files) {
@@ -50,14 +50,14 @@ public class Reclaimer {
int totNeg = 0;
- if (Reclaimer.trace) {
- Reclaimer.trace("posCount on " + currentFile + " = " + posCount);
+ if (logger.isTraceEnabled()) {
+ logger.trace("posCount on " + currentFile + " = " + posCount);
}
for (int j = i; j < files.length; j++) {
- if (Reclaimer.trace) {
+ if (logger.isTraceEnabled()) {
if (files[j].getNegCount(currentFile) != 0) {
- Reclaimer.trace("Negative from " + files[j] +
+ logger.trace("Negative from " + files[j] +
" into " +
currentFile +
" = " +
@@ -83,8 +83,8 @@ public class Reclaimer {
// Ok
}
else {
- if (Reclaimer.trace) {
- Reclaimer.trace(currentFile + " Can't be reclaimed because " + file + " has negative values");
+ if (logger.isTraceEnabled()) {
+ logger.trace(currentFile + " Can't be reclaimed because " + file + " has negative values");
}
currentFile.setCanReclaim(false);