Skip to content

Commit

Permalink
ARTEMIS-135 - Fix on journal load
Browse files Browse the repository at this point in the history
https://issues.apache.org/jira/browse/ARTEMIS-135

This is importing a recent fix from the journal on the old version.
If a crash happened between the create file and the fill of the file the
file wouldn't be loaded and the server wouldn't start until you removed the offending file
  • Loading branch information
TomasHofman authored and clebertsuconic committed Jun 11, 2015
1 parent 6738e81 commit 72354ee
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -375,18 +375,25 @@ public List<JournalFile> orderFiles() throws Exception
{
SequentialFile file = fileFactory.createSequentialFile(fileName, filesRepository.getMaxAIO());

file.open(1, false);

try
if (file.size() >= SIZE_HEADER)
{
file.open(1, false);

JournalFileImpl jrnFile = readFileHeader(file);
try
{
JournalFileImpl jrnFile = readFileHeader(file);

orderedFiles.add(jrnFile);
orderedFiles.add(jrnFile);
}
finally
{
file.close();
}
}
finally
else
{
file.close();
ActiveMQJournalLogger.LOGGER.ignoringShortFile(fileName);
file.delete();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -269,4 +269,8 @@ public interface ActiveMQJournalLogger extends BasicLogger
@Message(id = 144006, value = "IOError code {0}, {1}", format = Message.Format.MESSAGE_FORMAT)
void ioError(final int errorCode, final String errorMessage);

@LogMessage(level = Logger.Level.WARN)
@Message(id = 144007, value = "Ignoring journal file {0}: file is shorter then minimum header size. This file is being removed.", format = Message.Format.MESSAGE_FORMAT)
void ignoringShortFile(String fileName);

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import java.nio.ByteBuffer;
import java.util.List;
import java.io.File;

import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQIOErrorException;
Expand Down Expand Up @@ -3222,6 +3223,26 @@ public void testAddTexThenUpdate() throws Exception

}

@Test
public void testLoadTruncatedFile() throws Exception
{
setup(2, 2 * 1024, true);
createJournal();
startJournal();

String testDir = getTestDir();
new File(testDir + File.separator + filePrefix + "-1." + fileExtension).createNewFile();

try
{
load();
}
catch (Exception e)
{
Assert.fail("Unexpected exception: " + e.toString());
}
}

protected abstract int getAlignment();

}

0 comments on commit 72354ee

Please sign in to comment.