Example usage for org.apache.hadoop.hdfs.server.namenode INode getPathComponents

List of usage examples for org.apache.hadoop.hdfs.server.namenode INode getPathComponents

Introduction

In this page you can find the example usage for org.apache.hadoop.hdfs.server.namenode INode getPathComponents.

Prototype

@VisibleForTesting
public static byte[][] getPathComponents(String path) 

Source Link

Document

Breaks path into components.

Usage

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();
}