Juan Yu created HDFS-6908:
-----------------------------
Summary: incorrect snapshot directory diff generated by snapshot
deletion
Key: HDFS-6908
URL: https://issues.apache.org/jira/browse/HDFS-6908
Project: Hadoop HDFS
Issue Type: Bug
Reporter: Juan Yu
Assignee: Juan Yu
In the following scenario, delete snapshot could generate incorrect snapshot
directory diff and corrupted fsimage, if you restart NN after that, you will
get NullPointerException.
1. create a directory and create a file under it
2. take a snapshot
3. create another file under that directory
4. take second snapshot
5. delete both files and the directory
6. delete second snapshot
incorrect directory diff will be generated.
Restart NN will throw NPE
{code}
java.lang.NullPointerException
at
org.apache.hadoop.hdfs.server.namenode.snapshot.FSImageFormatPBSnapshot$Loader.addToDeletedList(FSImageFormatPBSnapshot.java:246)
at
org.apache.hadoop.hdfs.server.namenode.snapshot.FSImageFormatPBSnapshot$Loader.loadDeletedList(FSImageFormatPBSnapshot.java:265)
at
org.apache.hadoop.hdfs.server.namenode.snapshot.FSImageFormatPBSnapshot$Loader.loadDirectoryDiffList(FSImageFormatPBSnapshot.java:328)
at
org.apache.hadoop.hdfs.server.namenode.snapshot.FSImageFormatPBSnapshot$Loader.loadSnapshotDiffSection(FSImageFormatPBSnapshot.java:192)
at
org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254)
at
org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:168)
at
org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:208)
at
org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:906)
at
org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:892)
at
org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:715)
at
org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:653)
at
org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:276)
at
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:882)
at
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:629)
at
org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:498)
at
org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:554)
{code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)