From aa049d2ce28b3dcdba0c3b274b1afa576c9aa73e Mon Sep 17 00:00:00 2001 From: "Hiram R. Chirino" Date: Thu, 25 May 2006 07:44:50 +0000 Subject: [PATCH] Kaha can now journal the changes it makes to the indexes so that they can be used to redo the changes on failure. git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@409322 13f79535-47bb-0310-9956-ffa450edef68 --- .../activemq/kaha/impl/ContainerId.java | 14 ++-- .../activemq/kaha/impl/DataManager.java | 63 +++++++++------ .../activemq/kaha/impl/IndexManager.java | 22 ++++-- .../apache/activemq/kaha/impl/KahaStore.java | 77 +++++++++++------- .../kaha/impl/RedoStoreIndexItem.java | 79 +++++++++++++++++++ .../activemq/kaha/impl/StoreIndexWriter.java | 36 +++++++-- 6 files changed, 221 insertions(+), 70 deletions(-) create mode 100644 activemq-core/src/main/java/org/apache/activemq/kaha/impl/RedoStoreIndexItem.java diff --git a/activemq-core/src/main/java/org/apache/activemq/kaha/impl/ContainerId.java b/activemq-core/src/main/java/org/apache/activemq/kaha/impl/ContainerId.java index 6915fb3961..00d504a1c8 100644 --- a/activemq-core/src/main/java/org/apache/activemq/kaha/impl/ContainerId.java +++ b/activemq-core/src/main/java/org/apache/activemq/kaha/impl/ContainerId.java @@ -25,20 +25,20 @@ import java.io.ObjectOutput; public class ContainerId implements Externalizable{ private static final long serialVersionUID=-8883779541021821943L; private Object key; - private String dataContainerPrefix; + private String dataContainerName; /** * @return Returns the dataContainerPrefix. */ - public String getDataContainerPrefix(){ - return dataContainerPrefix; + public String getDataContainerName(){ + return dataContainerName; } /** * @param dataContainerPrefix The dataContainerPrefix to set. */ - public void setDataContainerPrefix(String dataContainerPrefix){ - this.dataContainerPrefix=dataContainerPrefix; + public void setDataContainerName(String dataContainerPrefix){ + this.dataContainerName=dataContainerPrefix; } /** @@ -69,12 +69,12 @@ public class ContainerId implements Externalizable{ } public void writeExternal(ObjectOutput out) throws IOException{ - out.writeUTF(getDataContainerPrefix()); + out.writeUTF(getDataContainerName()); out.writeObject(key); } public void readExternal(ObjectInput in) throws IOException,ClassNotFoundException{ - dataContainerPrefix=in.readUTF(); + dataContainerName=in.readUTF(); key=in.readObject(); } } \ No newline at end of file diff --git a/activemq-core/src/main/java/org/apache/activemq/kaha/impl/DataManager.java b/activemq-core/src/main/java/org/apache/activemq/kaha/impl/DataManager.java index 85e5c28a6e..60125bc96a 100644 --- a/activemq-core/src/main/java/org/apache/activemq/kaha/impl/DataManager.java +++ b/activemq-core/src/main/java/org/apache/activemq/kaha/impl/DataManager.java @@ -33,10 +33,11 @@ import org.apache.commons.logging.LogFactory; * @version $Revision: 1.1.1.1 $ */ final class DataManager{ + private static final Log log=LogFactory.getLog(DataManager.class); protected static long MAX_FILE_LENGTH=1024*1024*32; private final File dir; - private final String prefix; + private final String name; private StoreDataReader reader; private StoreDataWriter writer; private DataFile currentWriteFile; @@ -45,23 +46,28 @@ final class DataManager{ public static final int ITEM_HEAD_SIZE=5; // type + length public static final byte DATA_ITEM_TYPE=1; public static final byte REDO_ITEM_TYPE=2; + + Marshaller redoMarshaller = RedoStoreIndexItem.MARSHALLER; + private String dataFilePrefix; - DataManager(File dir,String pf){ + DataManager(File dir, final String name){ this.dir=dir; - this.prefix=pf; + this.name=name; this.reader=new StoreDataReader(this); this.writer=new StoreDataWriter(this); + + dataFilePrefix = "data-"+name+"-"; // build up list of current dataFiles File[] files=dir.listFiles(new FilenameFilter(){ - public boolean accept(File dir,String name){ - return dir.equals(dir)&&name.startsWith(prefix); + public boolean accept(File dir,String n){ + return dir.equals(dir)&&n.startsWith(dataFilePrefix); } }); if(files!=null){ for(int i=0;i