Author: todd
Date: Thu Mar 1 00:37:09 2012
New Revision: 1295356
URL: http://svn.apache.org/viewvc?rev=1295356&view=rev
Log:
HDFS-3023. Optimize entries in edits log for persistBlocks call. Contributed by
Todd Lipcon.
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LayoutVersion.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOpCodes.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsElement.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored.xml
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt
Thu Mar 1 00:37:09 2012
@@ -244,3 +244,5 @@ HDFS-2920. fix remaining TODO items. (at
HDFS-3027. Implement a simple NN health check. (atm)
HDFS-2979. Balancer should use logical uri for creating failover proxy with HA
enabled. (atm)
+
+HDFS-3023. Optimize entries in edits log for persistBlocks call. (todd)
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LayoutVersion.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LayoutVersion.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LayoutVersion.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LayoutVersion.java
Thu Mar 1 00:37:09 2012
@@ -91,7 +91,10 @@ public class LayoutVersion {
STORED_TXIDS(-37, "Transaction IDs are stored in edits log and image
files"),
TXID_BASED_LAYOUT(-38, "File names in NN Storage are based on transaction
IDs"),
EDITLOG_OP_OPTIMIZATION(-39,
- "Use LongWritable and ShortWritable directly instead of ArrayWritable
of UTF8");
+ "Use LongWritable and ShortWritable directly instead of ArrayWritable
of UTF8"),
+ OPTIMIZE_PERSIST_BLOCKS(-40,
+ "Serialize block lists with delta-encoded variable length ints, " +
+ "add OP_UPDATE_BLOCKS");
final int lv;
final int ancestorLV;
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
Thu Mar 1 00:37:09 2012
@@ -369,7 +369,7 @@ public class FSDirectory implements Clos
writeLock();
try {
- fsImage.getEditLog().logOpenFile(path, file);
+ fsImage.getEditLog().logUpdateBlocks(path, file);
if(NameNode.stateChangeLog.isDebugEnabled()) {
NameNode.stateChangeLog.debug("DIR* FSDirectory.persistBlocks: "
+path+" with "+ file.getBlocks().length
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
Thu Mar 1 00:37:09 2012
@@ -626,6 +626,13 @@ public class FSEditLog {
logEdit(op);
}
+ public void logUpdateBlocks(String path, INodeFileUnderConstruction file) {
+ UpdateBlocksOp op = UpdateBlocksOp.getInstance()
+ .setPath(path)
+ .setBlocks(file.getBlocks());
+ logEdit(op);
+ }
+
/**
* Add create directory record to edit log
*/
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
Thu Mar 1 00:37:09 2012
@@ -37,6 +37,7 @@ import org.apache.hadoop.hdfs.server.blo
import
org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoUnderConstruction;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.AddCloseOp;
+import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.BlockListUpdatingOp;
import
org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.CancelDelegationTokenOp;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.ClearNSQuotaOp;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.ConcatDeleteOp;
@@ -55,6 +56,7 @@ import org.apache.hadoop.hdfs.server.nam
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.SetReplicationOp;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.SymlinkOp;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.TimesOp;
+import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.UpdateBlocksOp;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.UpdateMasterKeyOp;
import org.apache.hadoop.hdfs.server.namenode.LeaseManager.Lease;
import org.apache.hadoop.hdfs.util.Holder;
@@ -242,6 +244,10 @@ public class FSEditLogLoader {
// Fall-through for case 2.
// Regardless of whether it's a new file or an updated file,
// update the block list.
+
+ // Update the salient file attributes.
+ newFile.setAccessTime(addCloseOp.atime);
+ newFile.setModificationTimeForce(addCloseOp.mtime);
updateBlocks(fsDir, addCloseOp, newFile);
break;
}
@@ -283,6 +289,24 @@ public class FSEditLogLoader {
}
break;
}
+ case OP_UPDATE_BLOCKS: {
+ UpdateBlocksOp updateOp = (UpdateBlocksOp)op;
+ if (FSNamesystem.LOG.isDebugEnabled()) {
+ FSNamesystem.LOG.debug(op.opCode + ": " + updateOp.path +
+ " numblocks : " + updateOp.blocks.length);
+ }
+ INodeFile oldFile = getINodeFile(fsDir, updateOp.path);
+ if (oldFile == null) {
+ throw new IOException(
+ "Operation trying to update blocks in non-existent file " +
+ updateOp.path);
+ }
+
+ // Update in-memory data structures
+ updateBlocks(fsDir, updateOp, oldFile);
+ break;
+ }
+
case OP_SET_REPLICATION: {
SetReplicationOp setReplicationOp = (SetReplicationOp)op;
short replication = fsNamesys.getBlockManager().adjustReplication(
@@ -472,32 +496,29 @@ public class FSEditLogLoader {
* Update in-memory data structures with new block information.
* @throws IOException
*/
- private void updateBlocks(FSDirectory fsDir, AddCloseOp addCloseOp,
+ private void updateBlocks(FSDirectory fsDir, BlockListUpdatingOp op,
INodeFile file) throws IOException {
-
- // Update the salient file attributes.
- file.setAccessTime(addCloseOp.atime);
- file.setModificationTimeForce(addCloseOp.mtime);
-
// Update its block list
BlockInfo[] oldBlocks = file.getBlocks();
+ Block[] newBlocks = op.getBlocks();
+ String path = op.getPath();
// Are we only updating the last block's gen stamp.
- boolean isGenStampUpdate = oldBlocks.length == addCloseOp.blocks.length;
+ boolean isGenStampUpdate = oldBlocks.length == newBlocks.length;
// First, update blocks in common
- for (int i = 0; i < oldBlocks.length && i < addCloseOp.blocks.length; i++)
{
+ for (int i = 0; i < oldBlocks.length && i < newBlocks.length; i++) {
BlockInfo oldBlock = oldBlocks[i];
- Block newBlock = addCloseOp.blocks[i];
+ Block newBlock = newBlocks[i];
- boolean isLastBlock = i == addCloseOp.blocks.length - 1;
+ boolean isLastBlock = i == newBlocks.length - 1;
if (oldBlock.getBlockId() != newBlock.getBlockId() ||
(oldBlock.getGenerationStamp() != newBlock.getGenerationStamp() &&
!(isGenStampUpdate && isLastBlock))) {
throw new IOException("Mismatched block IDs or generation stamps, " +
"attempting to replace block " + oldBlock + " with " + newBlock +
- " as block # " + i + "/" + addCloseOp.blocks.length + " of " +
- addCloseOp.path);
+ " as block # " + i + "/" + newBlocks.length + " of " +
+ path);
}
oldBlock.setNumBytes(newBlock.getNumBytes());
@@ -506,7 +527,7 @@ public class FSEditLogLoader {
oldBlock.setGenerationStamp(newBlock.getGenerationStamp());
if (oldBlock instanceof BlockInfoUnderConstruction &&
- (!isLastBlock || addCloseOp.opCode == FSEditLogOpCodes.OP_CLOSE)) {
+ (!isLastBlock || op.shouldCompleteLastBlock())) {
changeMade = true;
fsNamesys.getBlockManager().forceCompleteBlock(
(INodeFileUnderConstruction)file,
@@ -520,24 +541,27 @@ public class FSEditLogLoader {
}
}
- if (addCloseOp.blocks.length < oldBlocks.length) {
+ if (newBlocks.length < oldBlocks.length) {
// We're removing a block from the file, e.g. abandonBlock(...)
if (!file.isUnderConstruction()) {
throw new IOException("Trying to remove a block from file " +
- addCloseOp.path + " which is not under construction.");
+ path + " which is not under construction.");
}
- if (addCloseOp.blocks.length != oldBlocks.length - 1) {
+ if (newBlocks.length != oldBlocks.length - 1) {
throw new IOException("Trying to remove more than one block from file "
- + addCloseOp.path);
+ + path);
}
- fsDir.unprotectedRemoveBlock(addCloseOp.path,
+ fsDir.unprotectedRemoveBlock(path,
(INodeFileUnderConstruction)file, oldBlocks[oldBlocks.length - 1]);
- } else if (addCloseOp.blocks.length > oldBlocks.length) {
+ } else if (newBlocks.length > oldBlocks.length) {
// We're adding blocks
- for (int i = oldBlocks.length; i < addCloseOp.blocks.length; i++) {
- Block newBlock = addCloseOp.blocks[i];
+ for (int i = oldBlocks.length; i < newBlocks.length; i++) {
+ Block newBlock = newBlocks[i];
BlockInfo newBI;
- if (addCloseOp.opCode == FSEditLogOpCodes.OP_ADD){
+ if (!op.shouldCompleteLastBlock()) {
+ // TODO: shouldn't this only be true for the last block?
+ // what about an old-version fsync() where fsync isn't called
+ // until several blocks in?
newBI = new BlockInfoUnderConstruction(
newBlock, file.getReplication());
} else {
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java
Thu Mar 1 00:37:09 2012
@@ -101,6 +101,7 @@ public abstract class FSEditLogOp {
new LogSegmentOp(OP_START_LOG_SEGMENT));
instances.put(OP_END_LOG_SEGMENT,
new LogSegmentOp(OP_END_LOG_SEGMENT));
+ instances.put(OP_UPDATE_BLOCKS, new UpdateBlocksOp());
return instances;
}
};
@@ -128,8 +129,14 @@ public abstract class FSEditLogOp {
abstract void writeFields(DataOutputStream out)
throws IOException;
+ static interface BlockListUpdatingOp {
+ Block[] getBlocks();
+ String getPath();
+ boolean shouldCompleteLastBlock();
+ }
+
@SuppressWarnings("unchecked")
- static abstract class AddCloseOp extends FSEditLogOp {
+ static abstract class AddCloseOp extends FSEditLogOp implements
BlockListUpdatingOp {
int length;
String path;
short replication;
@@ -151,6 +158,10 @@ public abstract class FSEditLogOp {
this.path = path;
return (T)this;
}
+
+ public String getPath() {
+ return path;
+ }
<T extends AddCloseOp> T setReplication(short replication) {
this.replication = replication;
@@ -176,6 +187,10 @@ public abstract class FSEditLogOp {
this.blocks = blocks;
return (T)this;
}
+
+ public Block[] getBlocks() {
+ return blocks;
+ }
<T extends AddCloseOp> T setPermissionStatus(PermissionStatus permissions)
{
this.permissions = permissions;
@@ -347,6 +362,10 @@ public abstract class FSEditLogOp {
return (AddOp)opInstances.get().get(OP_ADD);
}
+ public boolean shouldCompleteLastBlock() {
+ return false;
+ }
+
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
@@ -365,6 +384,10 @@ public abstract class FSEditLogOp {
return (CloseOp)opInstances.get().get(OP_CLOSE);
}
+ public boolean shouldCompleteLastBlock() {
+ return true;
+ }
+
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
@@ -373,6 +396,68 @@ public abstract class FSEditLogOp {
return builder.toString();
}
}
+
+ static class UpdateBlocksOp extends FSEditLogOp implements
BlockListUpdatingOp {
+ String path;
+ Block[] blocks;
+
+ private UpdateBlocksOp() {
+ super(OP_UPDATE_BLOCKS);
+ }
+
+ static UpdateBlocksOp getInstance() {
+ return (UpdateBlocksOp)opInstances.get()
+ .get(OP_UPDATE_BLOCKS);
+ }
+
+
+ UpdateBlocksOp setPath(String path) {
+ this.path = path;
+ return this;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ UpdateBlocksOp setBlocks(Block[] blocks) {
+ this.blocks = blocks;
+ return this;
+ }
+
+ public Block[] getBlocks() {
+ return blocks;
+ }
+
+ @Override
+ void writeFields(DataOutputStream out) throws IOException {
+ FSImageSerialization.writeString(path, out);
+ FSImageSerialization.writeCompactBlockArray(blocks, out);
+ }
+
+ @Override
+ void readFields(DataInputStream in, int logVersion) throws IOException {
+ path = FSImageSerialization.readString(in);
+ this.blocks = FSImageSerialization.readCompactBlockArray(
+ in, logVersion);
+ }
+
+ @Override
+ public boolean shouldCompleteLastBlock() {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("UpdateBlocksOp [path=")
+ .append(path)
+ .append(", blocks=")
+ .append(Arrays.toString(blocks))
+ .append("]");
+ return sb.toString();
+ }
+ }
static class SetReplicationOp extends FSEditLogOp {
String path;
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOpCodes.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOpCodes.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOpCodes.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOpCodes.java
Thu Mar 1 00:37:09 2012
@@ -55,7 +55,8 @@ public enum FSEditLogOpCodes {
OP_UPDATE_MASTER_KEY ((byte) 21),
OP_REASSIGN_LEASE ((byte) 22),
OP_END_LOG_SEGMENT ((byte) 23),
- OP_START_LOG_SEGMENT ((byte) 24);
+ OP_START_LOG_SEGMENT ((byte) 24),
+ OP_UPDATE_BLOCKS ((byte) 25);
private byte opCode;
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java
Thu Mar 1 00:37:09 2012
@@ -40,6 +40,7 @@ import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.ShortWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
+import org.apache.hadoop.io.WritableUtils;
/**
* Static utility functions for serializing various pieces of data in the
correct
@@ -277,6 +278,49 @@ public class FSImageSerialization {
ustr.getLength(), (byte) Path.SEPARATOR_CHAR);
}
+
+ /**
+ * Write an array of blocks as compactly as possible. This uses
+ * delta-encoding for the generation stamp and size, following
+ * the principle that genstamp increases relatively slowly,
+ * and size is equal for all but the last block of a file.
+ */
+ public static void writeCompactBlockArray(
+ Block[] blocks, DataOutputStream out) throws IOException {
+ WritableUtils.writeVInt(out, blocks.length);
+ Block prev = null;
+ for (Block b : blocks) {
+ long szDelta = b.getNumBytes() -
+ (prev != null ? prev.getNumBytes() : 0);
+ long gsDelta = b.getGenerationStamp() -
+ (prev != null ? prev.getGenerationStamp() : 0);
+ out.writeLong(b.getBlockId()); // blockid is random
+ WritableUtils.writeVLong(out, szDelta);
+ WritableUtils.writeVLong(out, gsDelta);
+ prev = b;
+ }
+ }
+
+ public static Block[] readCompactBlockArray(
+ DataInputStream in, int logVersion) throws IOException {
+ int num = WritableUtils.readVInt(in);
+ if (num < 0) {
+ throw new IOException("Invalid block array length: " + num);
+ }
+ Block prev = null;
+ Block[] ret = new Block[num];
+ for (int i = 0; i < num; i++) {
+ long id = in.readLong();
+ long sz = WritableUtils.readVLong(in) +
+ ((prev != null) ? prev.getNumBytes() : 0);
+ long gs = WritableUtils.readVLong(in) +
+ ((prev != null) ? prev.getGenerationStamp() : 0);
+ ret[i] = new Block(id, sz, gs);
+ prev = ret[i];
+ }
+ return ret;
+ }
+
/**
* DatanodeImage is used to store persistent information
* about datanodes into the fsImage.
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsElement.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsElement.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsElement.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsElement.java
Thu Mar 1 00:37:09 2012
@@ -48,6 +48,8 @@ public enum EditsElement {
BLOCK_ID,
BLOCK_NUM_BYTES,
BLOCK_GENERATION_STAMP,
+ BLOCK_DELTA_NUM_BYTES, // delta-encoded relative to previous block
+ BLOCK_DELTA_GEN_STAMP, // delta-encoded relative to previous block
PERMISSION_STATUS,
FS_PERMISSIONS,
CLIENT_NAME,
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java
Thu Mar 1 00:37:09 2012
@@ -41,7 +41,7 @@ import static org.apache.hadoop.hdfs.too
class EditsLoaderCurrent implements EditsLoader {
private static int[] supportedVersions = { -18, -19, -20, -21, -22, -23, -24,
- -25, -26, -27, -28, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39};
+ -25, -26, -27, -28, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39,
-40};
private EditsVisitor v;
private int editsVersion = 0;
@@ -150,6 +150,25 @@ class EditsLoaderCurrent implements Edit
}
}
+ private void visit_OP_UPDATE_BLOCKS() throws IOException {
+ visitTxId();
+ v.visitStringUTF8(EditsElement.PATH);
+ VIntToken numBlocksToken = v.visitVInt(EditsElement.NUMBLOCKS);
+ for (int i = 0; i < numBlocksToken.value; i++) {
+ v.visitEnclosingElement(EditsElement.BLOCK);
+
+ v.visitLong(EditsElement.BLOCK_ID);
+ if (i == 0) {
+ v.visitVLong(EditsElement.BLOCK_NUM_BYTES);
+ v.visitVLong(EditsElement.BLOCK_GENERATION_STAMP);
+ } else {
+ v.visitVLong(EditsElement.BLOCK_DELTA_NUM_BYTES);
+ v.visitVLong(EditsElement.BLOCK_DELTA_GEN_STAMP);
+ }
+ v.leaveEnclosingElement();
+ }
+ }
+
/**
* Visit OP_RENAME_OLD
*/
@@ -521,6 +540,9 @@ class EditsLoaderCurrent implements Edit
case OP_START_LOG_SEGMENT: // 24
visit_OP_BEGIN_LOG_SEGMENT();
break;
+ case OP_UPDATE_BLOCKS: // 25
+ visit_OP_UPDATE_BLOCKS();
+ break;
default:
{
throw new IOException("Unknown op code " + editsOpCode);
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
Binary files - no diff available.
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored.xml
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored.xml?rev=1295356&r1=1295355&r2=1295356&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored.xml
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/editsStored.xml
Thu Mar 1 00:37:09 2012
@@ -1,34 +1,34 @@
<?xml version="1.0"?>
<EDITS>
- <EDITS_VERSION>-38</EDITS_VERSION>
+ <EDITS_VERSION>-40</EDITS_VERSION>
<RECORD>
<OPCODE>24</OPCODE>
<DATA>
<TRANSACTION_ID>1</TRANSACTION_ID>
</DATA>
- <CHECKSUM>1504643968</CHECKSUM>
+ <CHECKSUM>-2045328303</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>21</OPCODE>
<DATA>
<TRANSACTION_ID>2</TRANSACTION_ID>
<KEY_ID>1</KEY_ID>
- <KEY_EXPIRY_DATE>1304751257518</KEY_EXPIRY_DATE>
+ <KEY_EXPIRY_DATE>1331096884634</KEY_EXPIRY_DATE>
<KEY_LENGTH>3</KEY_LENGTH>
- <KEY_BLOB>2FhO</KEY_BLOB>
+ <KEY_BLOB>o0v1</KEY_BLOB>
</DATA>
- <CHECKSUM>-174778556</CHECKSUM>
+ <CHECKSUM>-1521490291</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>21</OPCODE>
<DATA>
<TRANSACTION_ID>3</TRANSACTION_ID>
<KEY_ID>2</KEY_ID>
- <KEY_EXPIRY_DATE>1304751257521</KEY_EXPIRY_DATE>
+ <KEY_EXPIRY_DATE>1331096884637</KEY_EXPIRY_DATE>
<KEY_LENGTH>3</KEY_LENGTH>
- <KEY_BLOB>77-r</KEY_BLOB>
+ <KEY_BLOB>3WMF</KEY_BLOB>
</DATA>
- <CHECKSUM>1565957291</CHECKSUM>
+ <CHECKSUM>65546244</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>10</OPCODE>
@@ -42,11 +42,10 @@
<OPCODE>0</OPCODE>
<DATA>
<TRANSACTION_ID>5</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
<PATH>/file_create</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057562</MTIME>
- <ATIME>1304060057562</ATIME>
+ <MTIME>1330405685834</MTIME>
+ <ATIME>1330405685834</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -54,20 +53,19 @@
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
- <CLIENT_NAME>DFSClient_NONMAPREDUCE_-66857152_1</CLIENT_NAME>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
<CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE>
</DATA>
- <CHECKSUM>-1854451489</CHECKSUM>
+ <CHECKSUM>179250704</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>9</OPCODE>
<DATA>
<TRANSACTION_ID>6</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
<PATH>/file_create</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057572</MTIME>
- <ATIME>1304060057562</ATIME>
+ <MTIME>1330405685848</MTIME>
+ <ATIME>1330405685834</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -76,44 +74,41 @@
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>617592855</CHECKSUM>
+ <CHECKSUM>-584136658</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>1</OPCODE>
<DATA>
<TRANSACTION_ID>7</TRANSACTION_ID>
- <LENGTH>3</LENGTH>
<SOURCE>/file_create</SOURCE>
<DESTINATION>/file_moved</DESTINATION>
- <TIMESTAMP>1304060057575</TIMESTAMP>
+ <TIMESTAMP>1330405685852</TIMESTAMP>
</DATA>
- <CHECKSUM>367100554</CHECKSUM>
+ <CHECKSUM>-1983534581</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>2</OPCODE>
<DATA>
<TRANSACTION_ID>8</TRANSACTION_ID>
- <LENGTH>2</LENGTH>
<PATH>/file_moved</PATH>
- <TIMESTAMP>1304060057577</TIMESTAMP>
+ <TIMESTAMP>1330405685857</TIMESTAMP>
</DATA>
- <CHECKSUM>1048346698</CHECKSUM>
+ <CHECKSUM>-97648053</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>3</OPCODE>
<DATA>
<TRANSACTION_ID>9</TRANSACTION_ID>
- <LENGTH>3</LENGTH>
<PATH>/directory_mkdir</PATH>
- <TIMESTAMP>1304060057581</TIMESTAMP>
- <ATIME>0</ATIME>
+ <TIMESTAMP>1330405685861</TIMESTAMP>
+ <ATIME>1330405685861</ATIME>
<PERMISSION_STATUS>
<USERNAME>todd</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>493</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>1207240248</CHECKSUM>
+ <CHECKSUM>-146811985</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>10</OPCODE>
@@ -127,11 +122,10 @@
<OPCODE>0</OPCODE>
<DATA>
<TRANSACTION_ID>11</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
<PATH>/file_create</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057584</MTIME>
- <ATIME>1304060057584</ATIME>
+ <MTIME>1330405685866</MTIME>
+ <ATIME>1330405685866</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -139,20 +133,19 @@
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
- <CLIENT_NAME>DFSClient_NONMAPREDUCE_-66857152_1</CLIENT_NAME>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
<CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE>
</DATA>
- <CHECKSUM>1796314473</CHECKSUM>
+ <CHECKSUM>806955943</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>9</OPCODE>
<DATA>
<TRANSACTION_ID>12</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
<PATH>/file_create</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057588</MTIME>
- <ATIME>1304060057584</ATIME>
+ <MTIME>1330405685868</MTIME>
+ <ATIME>1330405685866</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -161,7 +154,7 @@
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>1017626905</CHECKSUM>
+ <CHECKSUM>641893387</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>4</OPCODE>
@@ -170,7 +163,7 @@
<PATH>/file_create</PATH>
<REPLICATION>1</REPLICATION>
</DATA>
- <CHECKSUM>1842610087</CHECKSUM>
+ <CHECKSUM>24198146</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>7</OPCODE>
@@ -195,12 +188,11 @@
<OPCODE>13</OPCODE>
<DATA>
<TRANSACTION_ID>16</TRANSACTION_ID>
- <LENGTH>3</LENGTH>
<PATH>/file_create</PATH>
<MTIME>1285195527000</MTIME>
<ATIME>1285195527000</ATIME>
</DATA>
- <CHECKSUM>1428793678</CHECKSUM>
+ <CHECKSUM>1853168961</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>14</OPCODE>
@@ -216,13 +208,12 @@
<OPCODE>15</OPCODE>
<DATA>
<TRANSACTION_ID>18</TRANSACTION_ID>
- <LENGTH>3</LENGTH>
<SOURCE>/file_create</SOURCE>
<DESTINATION>/file_moved</DESTINATION>
- <TIMESTAMP>1304060057605</TIMESTAMP>
+ <TIMESTAMP>1330405685882</TIMESTAMP>
<RENAME_OPTIONS>AA</RENAME_OPTIONS>
</DATA>
- <CHECKSUM>-1155144192</CHECKSUM>
+ <CHECKSUM>-1235158297</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>10</OPCODE>
@@ -236,11 +227,10 @@
<OPCODE>0</OPCODE>
<DATA>
<TRANSACTION_ID>20</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
<PATH>/file_concat_target</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057613</MTIME>
- <ATIME>1304060057613</ATIME>
+ <MTIME>1330405685889</MTIME>
+ <ATIME>1330405685889</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -248,36 +238,116 @@
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
- <CLIENT_NAME>DFSClient_NONMAPREDUCE_-66857152_1</CLIENT_NAME>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
<CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE>
</DATA>
- <CHECKSUM>-428545606</CHECKSUM>
+ <CHECKSUM>-981119572</CHECKSUM>
</RECORD>
<RECORD>
- <OPCODE>9</OPCODE>
+ <OPCODE>10</OPCODE>
<DATA>
<TRANSACTION_ID>21</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
+ <GENERATION_STAMP>1004</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-1627007926</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>22</TRANSACTION_ID>
+ <PATH>/file_concat_target</PATH>
+ <NUMBLOCKS>1</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-7144805496741076283</BLOCK_ID>
+ <BLOCK_NUM_BYTES>0</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-1131701615</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>23</TRANSACTION_ID>
+ <GENERATION_STAMP>1005</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-957035430</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>24</TRANSACTION_ID>
+ <PATH>/file_concat_target</PATH>
+ <NUMBLOCKS>2</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-7144805496741076283</BLOCK_ID>
+ <BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-4125931756867080767</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>-512</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-932985519</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>25</TRANSACTION_ID>
+ <GENERATION_STAMP>1006</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-1757460878</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>26</TRANSACTION_ID>
+ <PATH>/file_concat_target</PATH>
+ <NUMBLOCKS>3</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-7144805496741076283</BLOCK_ID>
+ <BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-4125931756867080767</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>0</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>1562413691487277050</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>-512</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-154090859</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>9</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>27</TRANSACTION_ID>
<PATH>/file_concat_target</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057694</MTIME>
- <ATIME>1304060057613</ATIME>
+ <MTIME>1330405685978</MTIME>
+ <ATIME>1330405685889</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>3</NUMBLOCKS>
<BLOCK>
- <BLOCK_ID>3459038074990663911</BLOCK_ID>
+ <BLOCK_ID>-7144805496741076283</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1003</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
</BLOCK>
<BLOCK>
- <BLOCK_ID>-5555244278278879146</BLOCK_ID>
+ <BLOCK_ID>-4125931756867080767</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1003</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1005</BLOCK_GENERATION_STAMP>
</BLOCK>
<BLOCK>
- <BLOCK_ID>-6344128791846831740</BLOCK_ID>
+ <BLOCK_ID>1562413691487277050</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1003</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1006</BLOCK_GENERATION_STAMP>
</BLOCK>
<PERMISSION_STATUS>
<USERNAME>todd</USERNAME>
@@ -285,25 +355,24 @@
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>707995174</CHECKSUM>
+ <CHECKSUM>-292633850</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>10</OPCODE>
<DATA>
- <TRANSACTION_ID>22</TRANSACTION_ID>
- <GENERATION_STAMP>1004</GENERATION_STAMP>
+ <TRANSACTION_ID>28</TRANSACTION_ID>
+ <GENERATION_STAMP>1007</GENERATION_STAMP>
</DATA>
- <CHECKSUM>-1500977009</CHECKSUM>
+ <CHECKSUM>-1431358549</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>0</OPCODE>
<DATA>
- <TRANSACTION_ID>23</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
+ <TRANSACTION_ID>29</TRANSACTION_ID>
<PATH>/file_concat_0</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057701</MTIME>
- <ATIME>1304060057701</ATIME>
+ <MTIME>1330405685983</MTIME>
+ <ATIME>1330405685983</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -311,36 +380,116 @@
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
- <CLIENT_NAME>DFSClient_NONMAPREDUCE_-66857152_1</CLIENT_NAME>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
<CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE>
</DATA>
- <CHECKSUM>-119850856</CHECKSUM>
+ <CHECKSUM>-318194869</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>30</TRANSACTION_ID>
+ <GENERATION_STAMP>1008</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>156309208</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>31</TRANSACTION_ID>
+ <PATH>/file_concat_0</PATH>
+ <NUMBLOCKS>1</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>6084289468290363112</BLOCK_ID>
+ <BLOCK_NUM_BYTES>0</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1008</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-596016492</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>32</TRANSACTION_ID>
+ <GENERATION_STAMP>1009</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-1734001394</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>33</TRANSACTION_ID>
+ <PATH>/file_concat_0</PATH>
+ <NUMBLOCKS>2</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>6084289468290363112</BLOCK_ID>
+ <BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1008</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-4219431127125026105</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>-512</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>1352178323</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>34</TRANSACTION_ID>
+ <GENERATION_STAMP>1010</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>794444850</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>35</TRANSACTION_ID>
+ <PATH>/file_concat_0</PATH>
+ <NUMBLOCKS>3</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>6084289468290363112</BLOCK_ID>
+ <BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1008</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-4219431127125026105</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>0</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-1765119074945211374</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>-512</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-1530696539</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>9</OPCODE>
<DATA>
- <TRANSACTION_ID>24</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
+ <TRANSACTION_ID>36</TRANSACTION_ID>
<PATH>/file_concat_0</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057737</MTIME>
- <ATIME>1304060057701</ATIME>
+ <MTIME>1330405686013</MTIME>
+ <ATIME>1330405685983</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>3</NUMBLOCKS>
<BLOCK>
- <BLOCK_ID>4671949296381030428</BLOCK_ID>
+ <BLOCK_ID>6084289468290363112</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1008</BLOCK_GENERATION_STAMP>
</BLOCK>
<BLOCK>
- <BLOCK_ID>-844362243522407159</BLOCK_ID>
+ <BLOCK_ID>-4219431127125026105</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1009</BLOCK_GENERATION_STAMP>
</BLOCK>
<BLOCK>
- <BLOCK_ID>3476886462779656950</BLOCK_ID>
+ <BLOCK_ID>-1765119074945211374</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1004</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1010</BLOCK_GENERATION_STAMP>
</BLOCK>
<PERMISSION_STATUS>
<USERNAME>todd</USERNAME>
@@ -348,25 +497,24 @@
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>-766805874</CHECKSUM>
+ <CHECKSUM>-2043978220</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>10</OPCODE>
<DATA>
- <TRANSACTION_ID>25</TRANSACTION_ID>
- <GENERATION_STAMP>1005</GENERATION_STAMP>
+ <TRANSACTION_ID>37</TRANSACTION_ID>
+ <GENERATION_STAMP>1011</GENERATION_STAMP>
</DATA>
- <CHECKSUM>238426056</CHECKSUM>
+ <CHECKSUM>1010571629</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>0</OPCODE>
<DATA>
- <TRANSACTION_ID>26</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
+ <TRANSACTION_ID>38</TRANSACTION_ID>
<PATH>/file_concat_1</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057742</MTIME>
- <ATIME>1304060057742</ATIME>
+ <MTIME>1330405686017</MTIME>
+ <ATIME>1330405686017</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
@@ -374,36 +522,116 @@
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
- <CLIENT_NAME>DFSClient_NONMAPREDUCE_-66857152_1</CLIENT_NAME>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
<CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE>
</DATA>
- <CHECKSUM>1156254705</CHECKSUM>
+ <CHECKSUM>-501297097</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>39</TRANSACTION_ID>
+ <GENERATION_STAMP>1012</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-1934711736</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>40</TRANSACTION_ID>
+ <PATH>/file_concat_1</PATH>
+ <NUMBLOCKS>1</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-7448471719302683860</BLOCK_ID>
+ <BLOCK_NUM_BYTES>0</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1012</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-1853122907</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>41</TRANSACTION_ID>
+ <GENERATION_STAMP>1013</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>862670668</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>42</TRANSACTION_ID>
+ <PATH>/file_concat_1</PATH>
+ <NUMBLOCKS>2</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-7448471719302683860</BLOCK_ID>
+ <BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1012</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-8051065559769974521</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>-512</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-1169706939</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>43</TRANSACTION_ID>
+ <GENERATION_STAMP>1014</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-2070661520</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>44</TRANSACTION_ID>
+ <PATH>/file_concat_1</PATH>
+ <NUMBLOCKS>3</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-7448471719302683860</BLOCK_ID>
+ <BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1012</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>-8051065559769974521</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>0</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ <BLOCK>
+ <BLOCK_ID>3808670437711973616</BLOCK_ID>
+ <BLOCK_DELTA_NUM_BYTES>-512</BLOCK_DELTA_NUM_BYTES>
+ <BLOCK_DELTA_GEN_STAMP>1</BLOCK_DELTA_GEN_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-1568093815</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>9</OPCODE>
<DATA>
- <TRANSACTION_ID>27</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
+ <TRANSACTION_ID>45</TRANSACTION_ID>
<PATH>/file_concat_1</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1304060057764</MTIME>
- <ATIME>1304060057742</ATIME>
+ <MTIME>1330405686042</MTIME>
+ <ATIME>1330405686017</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>3</NUMBLOCKS>
<BLOCK>
- <BLOCK_ID>-754893470864399741</BLOCK_ID>
+ <BLOCK_ID>-7448471719302683860</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1005</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1012</BLOCK_GENERATION_STAMP>
</BLOCK>
<BLOCK>
- <BLOCK_ID>1820875380010181049</BLOCK_ID>
+ <BLOCK_ID>-8051065559769974521</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1005</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1013</BLOCK_GENERATION_STAMP>
</BLOCK>
<BLOCK>
- <BLOCK_ID>8266387560744259971</BLOCK_ID>
+ <BLOCK_ID>3808670437711973616</BLOCK_ID>
<BLOCK_NUM_BYTES>512</BLOCK_NUM_BYTES>
- <BLOCK_GENERATION_STAMP>1005</BLOCK_GENERATION_STAMP>
+ <BLOCK_GENERATION_STAMP>1014</BLOCK_GENERATION_STAMP>
</BLOCK>
<PERMISSION_STATUS>
<USERNAME>todd</USERNAME>
@@ -411,121 +639,194 @@
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>-654780301</CHECKSUM>
+ <CHECKSUM>-1640101896</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>16</OPCODE>
<DATA>
- <TRANSACTION_ID>28</TRANSACTION_ID>
- <LENGTH>4</LENGTH>
+ <TRANSACTION_ID>46</TRANSACTION_ID>
<CONCAT_TARGET>/file_concat_target</CONCAT_TARGET>
+ <LENGTH>2</LENGTH>
<CONCAT_SOURCE>/file_concat_0</CONCAT_SOURCE>
<CONCAT_SOURCE>/file_concat_1</CONCAT_SOURCE>
- <TIMESTAMP>1304060057767</TIMESTAMP>
+ <TIMESTAMP>1330405686046</TIMESTAMP>
</DATA>
- <CHECKSUM>1273279541</CHECKSUM>
+ <CHECKSUM>2122891157</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>17</OPCODE>
<DATA>
- <TRANSACTION_ID>29</TRANSACTION_ID>
- <LENGTH>4</LENGTH>
+ <TRANSACTION_ID>47</TRANSACTION_ID>
<SOURCE>/file_symlink</SOURCE>
<DESTINATION>/file_concat_target</DESTINATION>
- <MTIME>1304060057770</MTIME>
- <ATIME>1304060057770</ATIME>
+ <MTIME>1330405686051</MTIME>
+ <ATIME>1330405686051</ATIME>
<PERMISSION_STATUS>
<USERNAME>todd</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>511</FS_PERMISSIONS>
</PERMISSION_STATUS>
</DATA>
- <CHECKSUM>1385678569</CHECKSUM>
+ <CHECKSUM>-585385283</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>18</OPCODE>
<DATA>
- <TRANSACTION_ID>30</TRANSACTION_ID>
+ <TRANSACTION_ID>48</TRANSACTION_ID>
<T_VERSION>0</T_VERSION>
<T_OWNER>todd</T_OWNER>
<T_RENEWER>JobTracker</T_RENEWER>
<T_REAL_USER/>
- <T_ISSUE_DATE>1304060057773</T_ISSUE_DATE>
- <T_MAX_DATE>1304664857773</T_MAX_DATE>
+ <T_ISSUE_DATE>1330405686056</T_ISSUE_DATE>
+ <T_MAX_DATE>1331010486056</T_MAX_DATE>
<T_SEQUENCE_NUMBER>1</T_SEQUENCE_NUMBER>
<T_MASTER_KEY_ID>2</T_MASTER_KEY_ID>
- <T_EXPIRY_TIME>1304146457773</T_EXPIRY_TIME>
+ <T_EXPIRY_TIME>1330492086056</T_EXPIRY_TIME>
</DATA>
- <CHECKSUM>913145699</CHECKSUM>
+ <CHECKSUM>791321007</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>19</OPCODE>
<DATA>
- <TRANSACTION_ID>31</TRANSACTION_ID>
+ <TRANSACTION_ID>49</TRANSACTION_ID>
<T_VERSION>0</T_VERSION>
<T_OWNER>todd</T_OWNER>
<T_RENEWER>JobTracker</T_RENEWER>
<T_REAL_USER/>
- <T_ISSUE_DATE>1304060057773</T_ISSUE_DATE>
- <T_MAX_DATE>1304664857773</T_MAX_DATE>
+ <T_ISSUE_DATE>1330405686056</T_ISSUE_DATE>
+ <T_MAX_DATE>1331010486056</T_MAX_DATE>
<T_SEQUENCE_NUMBER>1</T_SEQUENCE_NUMBER>
<T_MASTER_KEY_ID>2</T_MASTER_KEY_ID>
- <T_EXPIRY_TIME>1304146457785</T_EXPIRY_TIME>
+ <T_EXPIRY_TIME>1330492086075</T_EXPIRY_TIME>
</DATA>
- <CHECKSUM>-1772039941</CHECKSUM>
+ <CHECKSUM>649714969</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>20</OPCODE>
<DATA>
- <TRANSACTION_ID>32</TRANSACTION_ID>
+ <TRANSACTION_ID>50</TRANSACTION_ID>
<T_VERSION>0</T_VERSION>
<T_OWNER>todd</T_OWNER>
<T_RENEWER>JobTracker</T_RENEWER>
<T_REAL_USER/>
- <T_ISSUE_DATE>1304060057773</T_ISSUE_DATE>
- <T_MAX_DATE>1304664857773</T_MAX_DATE>
+ <T_ISSUE_DATE>1330405686056</T_ISSUE_DATE>
+ <T_MAX_DATE>1331010486056</T_MAX_DATE>
<T_SEQUENCE_NUMBER>1</T_SEQUENCE_NUMBER>
<T_MASTER_KEY_ID>2</T_MASTER_KEY_ID>
</DATA>
- <CHECKSUM>1382094146</CHECKSUM>
+ <CHECKSUM>1190872628</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>51</TRANSACTION_ID>
+ <GENERATION_STAMP>1015</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-460593521</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>0</OPCODE>
<DATA>
- <TRANSACTION_ID>33</TRANSACTION_ID>
- <LENGTH>5</LENGTH>
- <PATH>/reassign-lease-test</PATH>
+ <TRANSACTION_ID>52</TRANSACTION_ID>
+ <PATH>/hard-lease-recovery-test</PATH>
<REPLICATION>1</REPLICATION>
- <MTIME>1286491964741</MTIME>
- <ATIME>1286491964741</ATIME>
+ <MTIME>1330405686084</MTIME>
+ <ATIME>1330405686084</ATIME>
<BLOCKSIZE>512</BLOCKSIZE>
<NUMBLOCKS>0</NUMBLOCKS>
<PERMISSION_STATUS>
- <USERNAME>atm</USERNAME>
+ <USERNAME>todd</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<FS_PERMISSIONS>420</FS_PERMISSIONS>
</PERMISSION_STATUS>
- <CLIENT_NAME>DFSClient_871171074</CLIENT_NAME>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
<CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE>
</DATA>
- <CHECKSUM>1975140107</CHECKSUM>
+ <CHECKSUM>2093219037</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>53</TRANSACTION_ID>
+ <GENERATION_STAMP>1016</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>120488596</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>54</TRANSACTION_ID>
+ <PATH>/hard-lease-recovery-test</PATH>
+ <NUMBLOCKS>1</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-357061736603024522</BLOCK_ID>
+ <BLOCK_NUM_BYTES>0</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1016</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>2098840974</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>25</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>55</TRANSACTION_ID>
+ <PATH>/hard-lease-recovery-test</PATH>
+ <NUMBLOCKS>1</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-357061736603024522</BLOCK_ID>
+ <BLOCK_NUM_BYTES>0</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1016</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ </DATA>
+ <CHECKSUM>-1794222801</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>10</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>56</TRANSACTION_ID>
+ <GENERATION_STAMP>1017</GENERATION_STAMP>
+ </DATA>
+ <CHECKSUM>-2123999915</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>22</OPCODE>
<DATA>
- <TRANSACTION_ID>34</TRANSACTION_ID>
- <CLIENT_NAME>DFSClient_871171074</CLIENT_NAME>
- <PATH>/reassign-lease-test</PATH>
+ <TRANSACTION_ID>57</TRANSACTION_ID>
+ <CLIENT_NAME>DFSClient_NONMAPREDUCE_-2143415023_1</CLIENT_NAME>
+ <PATH>/hard-lease-recovery-test</PATH>
<CLIENT_NAME>HDFS_NameNode</CLIENT_NAME>
</DATA>
- <CHECKSUM>1975140107</CHECKSUM>
+ <CHECKSUM>-1841690515</CHECKSUM>
+ </RECORD>
+ <RECORD>
+ <OPCODE>9</OPCODE>
+ <DATA>
+ <TRANSACTION_ID>58</TRANSACTION_ID>
+ <PATH>/hard-lease-recovery-test</PATH>
+ <REPLICATION>1</REPLICATION>
+ <MTIME>1330405688726</MTIME>
+ <ATIME>1330405686084</ATIME>
+ <BLOCKSIZE>512</BLOCKSIZE>
+ <NUMBLOCKS>1</NUMBLOCKS>
+ <BLOCK>
+ <BLOCK_ID>-357061736603024522</BLOCK_ID>
+ <BLOCK_NUM_BYTES>11</BLOCK_NUM_BYTES>
+ <BLOCK_GENERATION_STAMP>1017</BLOCK_GENERATION_STAMP>
+ </BLOCK>
+ <PERMISSION_STATUS>
+ <USERNAME>todd</USERNAME>
+ <GROUPNAME>supergroup</GROUPNAME>
+ <FS_PERMISSIONS>420</FS_PERMISSIONS>
+ </PERMISSION_STATUS>
+ </DATA>
+ <CHECKSUM>-218102037</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>23</OPCODE>
<DATA>
- <TRANSACTION_ID>35</TRANSACTION_ID>
+ <TRANSACTION_ID>59</TRANSACTION_ID>
</DATA>
- <CHECKSUM>1975140107</CHECKSUM>
+ <CHECKSUM>-1616653774</CHECKSUM>
</RECORD>
<RECORD>
<OPCODE>-1</OPCODE>