|
@@ -1,212 +0,0 @@
|
|
|
-/**
|
|
|
- * Licensed to the Apache Software Foundation (ASF) under one
|
|
|
- * or more contributor license agreements. See the NOTICE file
|
|
|
- * distributed with this work for additional information
|
|
|
- * regarding copyright ownership. The ASF licenses this file
|
|
|
- * to you under the Apache License, Version 2.0 (the
|
|
|
- * "License"); you may not use this file except in compliance
|
|
|
- * with the License. You may obtain a copy of the License at
|
|
|
- *
|
|
|
- * http://www.apache.org/licenses/LICENSE-2.0
|
|
|
- *
|
|
|
- * Unless required by applicable law or agreed to in writing, software
|
|
|
- * distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
- * See the License for the specific language governing permissions and
|
|
|
- * limitations under the License.
|
|
|
- */
|
|
|
-package org.apache.hadoop.hdfs.tools.offlineImageViewer;
|
|
|
-
|
|
|
-import java.io.IOException;
|
|
|
-
|
|
|
-/**
|
|
|
- * An implementation of ImageVisitor can traverse the structure of an
|
|
|
- * Hadoop fsimage and respond to each of the structures within the file.
|
|
|
- */
|
|
|
-abstract class ImageVisitor {
|
|
|
-
|
|
|
- /**
|
|
|
- * Structural elements of an FSImage that may be encountered within the
|
|
|
- * file. ImageVisitors are able to handle processing any of these elements.
|
|
|
- */
|
|
|
- public enum ImageElement {
|
|
|
- FS_IMAGE,
|
|
|
- IMAGE_VERSION,
|
|
|
- NAMESPACE_ID,
|
|
|
- IS_COMPRESSED,
|
|
|
- COMPRESS_CODEC,
|
|
|
- LAYOUT_VERSION,
|
|
|
- NUM_INODES,
|
|
|
- GENERATION_STAMP,
|
|
|
- GENERATION_STAMP_V2,
|
|
|
- GENERATION_STAMP_V1_LIMIT,
|
|
|
- LAST_ALLOCATED_BLOCK_ID,
|
|
|
- INODES,
|
|
|
- INODE,
|
|
|
- INODE_PATH,
|
|
|
- REPLICATION,
|
|
|
- MODIFICATION_TIME,
|
|
|
- ACCESS_TIME,
|
|
|
- BLOCK_SIZE,
|
|
|
- NUM_BLOCKS,
|
|
|
- BLOCKS,
|
|
|
- BLOCK,
|
|
|
- BLOCK_ID,
|
|
|
- NUM_BYTES,
|
|
|
- NS_QUOTA,
|
|
|
- DS_QUOTA,
|
|
|
- PERMISSIONS,
|
|
|
- SYMLINK,
|
|
|
- NUM_INODES_UNDER_CONSTRUCTION,
|
|
|
- INODES_UNDER_CONSTRUCTION,
|
|
|
- INODE_UNDER_CONSTRUCTION,
|
|
|
- PREFERRED_BLOCK_SIZE,
|
|
|
- CLIENT_NAME,
|
|
|
- CLIENT_MACHINE,
|
|
|
- USER_NAME,
|
|
|
- GROUP_NAME,
|
|
|
- PERMISSION_STRING,
|
|
|
- CURRENT_DELEGATION_KEY_ID,
|
|
|
- NUM_DELEGATION_KEYS,
|
|
|
- DELEGATION_KEYS,
|
|
|
- DELEGATION_KEY,
|
|
|
- DELEGATION_TOKEN_SEQUENCE_NUMBER,
|
|
|
- NUM_DELEGATION_TOKENS,
|
|
|
- DELEGATION_TOKENS,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_KIND,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_SEQNO,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_OWNER,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_RENEWER,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_REALUSER,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_ISSUE_DATE,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_MAX_DATE,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_EXPIRY_TIME,
|
|
|
- DELEGATION_TOKEN_IDENTIFIER_MASTER_KEY_ID,
|
|
|
- TRANSACTION_ID,
|
|
|
- LAST_INODE_ID,
|
|
|
- INODE_ID,
|
|
|
-
|
|
|
- SNAPSHOT_COUNTER,
|
|
|
- NUM_SNAPSHOTS_TOTAL,
|
|
|
- NUM_SNAPSHOTS,
|
|
|
- SNAPSHOTS,
|
|
|
- SNAPSHOT,
|
|
|
- SNAPSHOT_ID,
|
|
|
- SNAPSHOT_ROOT,
|
|
|
- SNAPSHOT_QUOTA,
|
|
|
- NUM_SNAPSHOT_DIR_DIFF,
|
|
|
- SNAPSHOT_DIR_DIFFS,
|
|
|
- SNAPSHOT_DIR_DIFF,
|
|
|
- SNAPSHOT_DIFF_SNAPSHOTID,
|
|
|
- SNAPSHOT_DIR_DIFF_CHILDREN_SIZE,
|
|
|
- SNAPSHOT_INODE_FILE_ATTRIBUTES,
|
|
|
- SNAPSHOT_INODE_DIRECTORY_ATTRIBUTES,
|
|
|
- SNAPSHOT_DIR_DIFF_CREATEDLIST,
|
|
|
- SNAPSHOT_DIR_DIFF_CREATEDLIST_SIZE,
|
|
|
- SNAPSHOT_DIR_DIFF_CREATED_INODE,
|
|
|
- SNAPSHOT_DIR_DIFF_DELETEDLIST,
|
|
|
- SNAPSHOT_DIR_DIFF_DELETEDLIST_SIZE,
|
|
|
- SNAPSHOT_DIR_DIFF_DELETED_INODE,
|
|
|
- IS_SNAPSHOTTABLE_DIR,
|
|
|
- IS_WITHSNAPSHOT_DIR,
|
|
|
- SNAPSHOT_FILE_DIFFS,
|
|
|
- SNAPSHOT_FILE_DIFF,
|
|
|
- NUM_SNAPSHOT_FILE_DIFF,
|
|
|
- SNAPSHOT_FILE_SIZE,
|
|
|
- SNAPSHOT_DST_SNAPSHOT_ID,
|
|
|
- SNAPSHOT_LAST_SNAPSHOT_ID,
|
|
|
- SNAPSHOT_REF_INODE_ID,
|
|
|
- SNAPSHOT_REF_INODE,
|
|
|
-
|
|
|
- CACHE_NEXT_ENTRY_ID,
|
|
|
- CACHE_NUM_POOLS,
|
|
|
- CACHE_POOL_NAME,
|
|
|
- CACHE_POOL_OWNER_NAME,
|
|
|
- CACHE_POOL_GROUP_NAME,
|
|
|
- CACHE_POOL_PERMISSION_STRING,
|
|
|
- CACHE_POOL_WEIGHT,
|
|
|
- CACHE_NUM_ENTRIES,
|
|
|
- CACHE_ENTRY_PATH,
|
|
|
- CACHE_ENTRY_REPLICATION,
|
|
|
- CACHE_ENTRY_POOL_NAME
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Begin visiting the fsimage structure. Opportunity to perform
|
|
|
- * any initialization necessary for the implementing visitor.
|
|
|
- */
|
|
|
- abstract void start() throws IOException;
|
|
|
-
|
|
|
- /**
|
|
|
- * Finish visiting the fsimage structure. Opportunity to perform any
|
|
|
- * clean up necessary for the implementing visitor.
|
|
|
- */
|
|
|
- abstract void finish() throws IOException;
|
|
|
-
|
|
|
- /**
|
|
|
- * Finish visiting the fsimage structure after an error has occurred
|
|
|
- * during the processing. Opportunity to perform any clean up necessary
|
|
|
- * for the implementing visitor.
|
|
|
- */
|
|
|
- abstract void finishAbnormally() throws IOException;
|
|
|
-
|
|
|
- /**
|
|
|
- * Visit non enclosing element of fsimage with specified value.
|
|
|
- *
|
|
|
- * @param element FSImage element
|
|
|
- * @param value Element's value
|
|
|
- */
|
|
|
- abstract void visit(ImageElement element, String value) throws IOException;
|
|
|
-
|
|
|
- // Convenience methods to automatically convert numeric value types to strings
|
|
|
- void visit(ImageElement element, int value) throws IOException {
|
|
|
- visit(element, Integer.toString(value));
|
|
|
- }
|
|
|
-
|
|
|
- void visit(ImageElement element, long value) throws IOException {
|
|
|
- visit(element, Long.toString(value));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Begin visiting an element that encloses another element, such as
|
|
|
- * the beginning of the list of blocks that comprise a file.
|
|
|
- *
|
|
|
- * @param element Element being visited
|
|
|
- */
|
|
|
- abstract void visitEnclosingElement(ImageElement element)
|
|
|
- throws IOException;
|
|
|
-
|
|
|
- /**
|
|
|
- * Begin visiting an element that encloses another element, such as
|
|
|
- * the beginning of the list of blocks that comprise a file.
|
|
|
- *
|
|
|
- * Also provide an additional key and value for the element, such as the
|
|
|
- * number items within the element.
|
|
|
- *
|
|
|
- * @param element Element being visited
|
|
|
- * @param key Key describing the element being visited
|
|
|
- * @param value Value associated with element being visited
|
|
|
- */
|
|
|
- abstract void visitEnclosingElement(ImageElement element,
|
|
|
- ImageElement key, String value) throws IOException;
|
|
|
-
|
|
|
- // Convenience methods to automatically convert value types to strings
|
|
|
- void visitEnclosingElement(ImageElement element,
|
|
|
- ImageElement key, int value)
|
|
|
- throws IOException {
|
|
|
- visitEnclosingElement(element, key, Integer.toString(value));
|
|
|
- }
|
|
|
-
|
|
|
- void visitEnclosingElement(ImageElement element,
|
|
|
- ImageElement key, long value)
|
|
|
- throws IOException {
|
|
|
- visitEnclosingElement(element, key, Long.toString(value));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Leave current enclosing element. Called, for instance, at the end of
|
|
|
- * processing the blocks that compromise a file.
|
|
|
- */
|
|
|
- abstract void leaveEnclosingElement() throws IOException;
|
|
|
-}
|