List of usage examples for org.apache.hadoop.hdfs.server.namenode INode getPathComponents
@VisibleForTesting public static byte[][] getPathComponents(String path)
From source file:io.hops.common.INodeUtil.java
License:Apache License
public static void resolvePathWithNoTransaction(String path, boolean resolveLink, LinkedList<INode> preTxResolvedINodes, boolean[] isPathFullyResolved) throws UnresolvedPathException, StorageException, TransactionContextException { preTxResolvedINodes.clear();/*from ww w . ja v a2 s . co m*/ isPathFullyResolved[0] = false; byte[][] components = INode.getPathComponents(path); INode curNode = getRoot(); preTxResolvedINodes.add(curNode); if (components.length == 1) { return; } INodeResolver resolver = new INodeResolver(components, curNode, resolveLink, false); while (resolver.hasNext()) { curNode = resolver.next(); if (curNode != null) { preTxResolvedINodes.add(curNode); } } isPathFullyResolved[0] = preTxResolvedINodes.size() == components.length; }
From source file:io.hops.transaction.lock.INodeLock.java
License:Apache License
private List<INode> acquireINodeLockByPath(String path) throws UnresolvedPathException, StorageException, SubtreeLockedException, TransactionContextException { List<INode> resolvedINodes = new ArrayList<INode>(); byte[][] components = INode.getPathComponents(path); INode currentINode;/*from ww w. j a v a 2 s . c om*/ if (isRootTarget(components)) { resolvedINodes.add(acquireLockOnRoot(lockType)); return resolvedINodes; } else if (isRootParent(components) && TransactionLockTypes.impliesParentWriteLock(this.lockType)) { currentINode = acquireLockOnRoot(lockType); } else { currentINode = acquireLockOnRoot(DEFAULT_INODE_LOCK_TYPE); } resolvedINodes.add(currentINode); INodeResolver resolver = new INodeResolver(components, currentINode, resolveLink, true); while (resolver.hasNext()) { TransactionLockTypes.INodeLockType currentINodeLock = identifyLockType(resolver.getCount() + 1, components); setINodeLockType(currentINodeLock); currentINode = resolver.next(); if (currentINode != null) { addLockedINodes(currentINode, currentINodeLock); checkSubtreeLock(currentINode); resolvedINodes.add(currentINode); } } handleLockUpgrade(resolvedINodes, components, path); return resolvedINodes; }
From source file:io.hops.transaction.lock.INodeLock.java
License:Apache License
private List<INode> acquireLockOnRestOfPath(TransactionLockTypes.INodeLockType lock, INode baseInode, String fullPath, String prefix, boolean resolveLink) throws StorageException, UnresolvedPathException, TransactionContextException { List<INode> resolved = new ArrayList<INode>(); byte[][] fullComps = INode.getPathComponents(fullPath); byte[][] prefixComps = INode.getPathComponents(prefix); INodeResolver resolver = new INodeResolver(fullComps, baseInode, resolveLink, true, prefixComps.length - 1); while (resolver.hasNext()) { setINodeLockType(lock);//from w ww. j av a 2 s . com INode current = resolver.next(); if (current != null) { addLockedINodes(current, lock); resolved.add(current); } } return resolved; }
From source file:io.hops.transaction.lock.INodeLock.java
License:Apache License
private String buildPath(String path, int size) { StringBuilder builder = new StringBuilder(); byte[][] components = INode.getPathComponents(path); for (int i = 0; i < Math.min(components.length, size); i++) { if (i == 0) { builder.append("/"); } else {/*from w w w . j a va 2 s.c o m*/ if (i != 1) { builder.append("/"); } builder.append(DFSUtil.bytes2String(components[i])); } } return builder.toString(); }