Example usage for org.apache.hadoop.hdfs.server.protocol DatanodeProtocol NOTIFY

List of usage examples for org.apache.hadoop.hdfs.server.protocol DatanodeProtocol NOTIFY

Introduction

In this page you can find the example usage for org.apache.hadoop.hdfs.server.protocol DatanodeProtocol NOTIFY.

Prototype

int NOTIFY

To view the source code for org.apache.hadoop.hdfs.server.protocol DatanodeProtocol NOTIFY.

Click Source Link

Usage

From source file:common.DataNode.java

License:Apache License

private NamespaceInfo handshake() throws IOException {
    NamespaceInfo nsInfo = new NamespaceInfo();
    while (shouldRun) {
        try {//from   w  ww .  j  a  v a  2  s  . com
            nsInfo = namenode.versionRequest();
            break;
        } catch (SocketTimeoutException e) { // namenode is busy
            LOG.info("Problem connecting to server: " + getNameNodeAddr());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ie) {
            }
        }
    }
    String errorMsg = null;
    // verify build version
    if (!nsInfo.getBuildVersion().equals(Storage.getBuildVersion())) {
        errorMsg = "Incompatible build versions: namenode BV = " + nsInfo.getBuildVersion() + "; datanode BV = "
                + Storage.getBuildVersion();
        LOG.fatal(errorMsg);
        try {
            namenode.errorReport(dnRegistration, DatanodeProtocol.NOTIFY, errorMsg);
        } catch (SocketTimeoutException e) { // namenode is busy
            LOG.info("Problem connecting to server: " + getNameNodeAddr());
        }
        throw new IOException(errorMsg);
    }
    assert FSConstants.LAYOUT_VERSION == nsInfo
            .getLayoutVersion() : "Data-node and name-node layout versions must be the same." + "Expected: "
                    + FSConstants.LAYOUT_VERSION + " actual " + nsInfo.getLayoutVersion();
    return nsInfo;
}

From source file:common.NameNode.java

License:Apache License

/**
 *//*from  w  w w  .  jav  a 2  s . co m*/
public void errorReport(DatanodeRegistration nodeReg, int errorCode, String msg) throws IOException {
    // Log error message from datanode
    String dnName = (nodeReg == null ? "unknown DataNode" : nodeReg.getName());
    LOG.info("Error report from " + dnName + ": " + msg);
    if (errorCode == DatanodeProtocol.NOTIFY) {
        return;
    }
    verifyRequest(nodeReg);
    if (errorCode == DatanodeProtocol.DISK_ERROR) {
        LOG.warn("Volume failed on " + dnName);
    } else if (errorCode == DatanodeProtocol.FATAL_DISK_ERROR) {
        namesystem.removeDatanode(nodeReg);
    }
}