Search in sources :

Example 1 with ServerException

use of com.baidu.hugegraph.exception.ServerException in project incubator-hugegraph-toolchain by apache.

the class VertexLabelService method get.

public VertexLabelEntity get(String name, int connId) {
    HugeClient client = this.client(connId);
    try {
        VertexLabel vertexLabel = client.schema().getVertexLabel(name);
        List<IndexLabel> indexLabels = client.schema().getIndexLabels();
        return join(vertexLabel, indexLabels);
    } catch (ServerException e) {
        if (e.status() == Constant.STATUS_NOT_FOUND) {
            throw new ExternalException("schema.vertexlabel.not-exist", e, name);
        }
        throw new ExternalException("schema.vertexlabel.get.failed", e, name);
    }
}
Also used : HugeClient(com.baidu.hugegraph.driver.HugeClient) ServerException(com.baidu.hugegraph.exception.ServerException) VertexLabel(com.baidu.hugegraph.structure.schema.VertexLabel) IndexLabel(com.baidu.hugegraph.structure.schema.IndexLabel) ExternalException(com.baidu.hugegraph.exception.ExternalException)

Example 2 with ServerException

use of com.baidu.hugegraph.exception.ServerException in project incubator-hugegraph-toolchain by apache.

the class FileLoadTest method testSingleInsertEdgeWithCheckVertexFalse.

@Test
public void testSingleInsertEdgeWithCheckVertexFalse() {
    // The source and target vertex doesn't exist
    ioUtil.write("edge_knows.csv", "source_name,target_name,date,weight", "marko,vadas,20160110,0.5", "marko,josh,20130220,1.0");
    ioUtil.write("edge_created.csv", "source_name,target_name,date,weight", "marko,lop,20171210,0.4", "josh,lop,20091111,0.4", "josh,ripple,20171210,1.0", "peter,lop,20170324,0.2");
    String[] args = new String[] { "-f", structPath("single_insert_edge_with_check_vertex_false/struct.json"), "-s", configPath("single_insert_edge_with_check_vertex_false/schema.groovy"), "-g", GRAPH, "-h", SERVER, "--check-vertex", "false", "--batch-insert-threads", "2", "--test-mode", "true" };
    HugeGraphLoader.main(args);
    List<Vertex> vertices = CLIENT.graph().listVertices();
    List<Edge> edges = CLIENT.graph().listEdges();
    Assert.assertEquals(0, vertices.size());
    Assert.assertEquals(6, edges.size());
    edges.forEach(edge -> {
        Assert.assertThrows(ServerException.class, () -> {
            CLIENT.graph().getVertex(edge.sourceId());
        }, e -> {
            ServerException se = (ServerException) e;
            Assert.assertTrue(se.exception().contains("NotFoundException"));
        });
        Assert.assertThrows(ServerException.class, () -> {
            CLIENT.graph().getVertex(edge.targetId());
        }, e -> {
            ServerException se = (ServerException) e;
            Assert.assertTrue(se.exception().contains("NotFoundException"));
        });
    });
}
Also used : Vertex(com.baidu.hugegraph.structure.graph.Vertex) ServerException(com.baidu.hugegraph.exception.ServerException) Edge(com.baidu.hugegraph.structure.graph.Edge) Test(org.junit.Test)

Example 3 with ServerException

use of com.baidu.hugegraph.exception.ServerException in project incubator-hugegraph-toolchain by apache.

the class EdgeLabelService method get.

public EdgeLabelEntity get(String name, int connId) {
    HugeClient client = this.client(connId);
    try {
        EdgeLabel edgeLabel = client.schema().getEdgeLabel(name);
        List<IndexLabel> indexLabels = client.schema().getIndexLabels();
        return convert(edgeLabel, indexLabels);
    } catch (ServerException e) {
        if (e.status() == Constant.STATUS_NOT_FOUND) {
            throw new ExternalException("schema.edgelabel.not-exist", e, name);
        }
        throw new ExternalException("schema.edgelabel.get.failed", e, name);
    }
}
Also used : HugeClient(com.baidu.hugegraph.driver.HugeClient) ServerException(com.baidu.hugegraph.exception.ServerException) IndexLabel(com.baidu.hugegraph.structure.schema.IndexLabel) EdgeLabel(com.baidu.hugegraph.structure.schema.EdgeLabel) ExternalException(com.baidu.hugegraph.exception.ExternalException)

Example 4 with ServerException

use of com.baidu.hugegraph.exception.ServerException in project incubator-hugegraph-toolchain by apache.

the class HugeClientUtil method tryConnect.

public static HugeClient tryConnect(GraphConnection connection) {
    String graph = connection.getGraph();
    String host = connection.getHost();
    Integer port = connection.getPort();
    String username = connection.getUsername();
    String password = connection.getPassword();
    int timeout = connection.getTimeout();
    String protocol = connection.getProtocol() == null ? DEFAULT_PROTOCOL : connection.getProtocol();
    String trustStoreFile = connection.getTrustStoreFile();
    String trustStorePassword = connection.getTrustStorePassword();
    String url = UriComponentsBuilder.newInstance().scheme(protocol).host(host).port(port).toUriString();
    if (username == null) {
        username = "";
        password = "";
    }
    HugeClient client;
    try {
        client = HugeClient.builder(url, graph).configUser(username, password).configTimeout(timeout).configSSL(trustStoreFile, trustStorePassword).build();
    } catch (IllegalStateException e) {
        String message = e.getMessage();
        if (message != null && message.startsWith("The version")) {
            throw new ExternalException("client-server.version.unmatched", e);
        }
        if (message != null && (message.startsWith("Error loading trust store from") || message.startsWith("Cannot find trust store file"))) {
            throw new ExternalException("https.load.truststore.error", e);
        }
        throw e;
    } catch (ServerException e) {
        String message = e.getMessage();
        if (Constant.STATUS_UNAUTHORIZED == e.status() || (message != null && message.startsWith("Authentication"))) {
            throw new ExternalException("graph-connection.username-or-password.incorrect", e);
        }
        if (message != null && message.contains("Invalid syntax for " + "username and password")) {
            throw new ExternalException("graph-connection.missing-username-password", e);
        }
        throw e;
    } catch (ClientException e) {
        Throwable cause = e.getCause();
        if (cause == null || cause.getMessage() == null) {
            throw e;
        }
        String message = cause.getMessage();
        if (message.contains("Connection refused")) {
            throw new ExternalException("service.unavailable", e, host, port);
        } else if (message.contains("java.net.UnknownHostException") || message.contains("Host name may not be null")) {
            throw new ExternalException("service.unknown-host", e, host);
        } else if (message.contains("<!doctype html>")) {
            throw new ExternalException("service.suspected-web", e, host, port);
        }
        throw e;
    }
    try {
        ResultSet rs = client.gremlin().gremlin("g.V().limit(1)").execute();
        rs.iterator().forEachRemaining(Result::getObject);
    } catch (ServerException e) {
        if (Constant.STATUS_UNAUTHORIZED == e.status()) {
            throw new ExternalException("graph-connection.username-or-password.incorrect", e);
        }
        String message = e.message();
        if (message != null && message.contains("Could not rebind [g]")) {
            throw new ExternalException("graph-connection.graph.unexist", e, graph, host, port);
        }
        if (!isAcceptable(message)) {
            throw e;
        }
    } catch (Exception e) {
        client.close();
        throw e;
    }
    return client;
}
Also used : HugeClient(com.baidu.hugegraph.driver.HugeClient) ServerException(com.baidu.hugegraph.exception.ServerException) ResultSet(com.baidu.hugegraph.structure.gremlin.ResultSet) ClientException(com.baidu.hugegraph.rest.ClientException) ExternalException(com.baidu.hugegraph.exception.ExternalException) ServerException(com.baidu.hugegraph.exception.ServerException) ExternalException(com.baidu.hugegraph.exception.ExternalException) ClientException(com.baidu.hugegraph.rest.ClientException) Result(com.baidu.hugegraph.structure.gremlin.Result)

Example 5 with ServerException

use of com.baidu.hugegraph.exception.ServerException in project incubator-hugegraph-toolchain by apache.

the class HugeClientHolder method create.

public static HugeClient create(LoadOptions options) {
    boolean useHttps = options.protocol != null && options.protocol.equals(LoadOptions.HTTPS_SCHEMA);
    String address = options.host + ":" + options.port;
    if (!options.host.startsWith(Constants.HTTP_PREFIX) && !options.host.startsWith(Constants.HTTPS_PREFIX)) {
        if (useHttps) {
            address = Constants.HTTPS_PREFIX + address;
        } else {
            address = Constants.HTTP_PREFIX + address;
        }
    }
    String username = options.username != null ? options.username : options.graph;
    HugeClientBuilder builder;
    try {
        builder = HugeClient.builder(address, options.graph).configUser(username, options.token).configTimeout(options.timeout).configPool(options.maxConnections, options.maxConnectionsPerRoute);
        if (useHttps) {
            String trustFile;
            if (options.trustStoreFile == null) {
                String homePath = System.getProperty("loader.home.path");
                E.checkArgument(StringUtils.isNotEmpty(homePath), "The system property 'loader.home.path' " + "can't be null or empty when enable " + "https protocol");
                trustFile = Paths.get(homePath, Constants.TRUST_STORE_FILE).toString();
            } else {
                trustFile = options.trustStoreFile;
            }
            // Hard code: "hugegraph"
            String token = options.trustStoreToken == null ? "hugegraph" : options.trustStoreToken;
            builder.configSSL(trustFile, token);
        }
        return builder.build();
    } catch (IllegalStateException e) {
        String message = e.getMessage();
        if (message != null && message.startsWith("The version")) {
            throw new LoadException("The version of hugegraph-client and " + "hugegraph-server don't match", e);
        }
        throw e;
    } catch (ServerException e) {
        String message = e.getMessage();
        if (Constants.STATUS_UNAUTHORIZED == e.status() || (message != null && message.startsWith("Authentication"))) {
            throw new LoadException("Incorrect username or password", e);
        }
        throw e;
    } catch (ClientException e) {
        Throwable cause = e.getCause();
        if (cause == null || cause.getMessage() == null) {
            throw e;
        }
        String message = cause.getMessage();
        if (message.contains("Connection refused")) {
            throw new LoadException("The service %s:%s is unavailable", e, options.host, options.port);
        } else if (message.contains("java.net.UnknownHostException") || message.contains("Host name may not be null")) {
            throw new LoadException("The host %s is unknown", e, options.host);
        } else if (message.contains("connect timed out")) {
            throw new LoadException("Connect service %s:%s timeout, " + "please check service is available " + "and network is unobstructed", e, options.host, options.port);
        }
        throw e;
    }
}
Also used : ServerException(com.baidu.hugegraph.exception.ServerException) ClientException(com.baidu.hugegraph.rest.ClientException) HugeClientBuilder(com.baidu.hugegraph.driver.HugeClientBuilder) LoadException(com.baidu.hugegraph.loader.exception.LoadException)

Aggregations

ServerException (com.baidu.hugegraph.exception.ServerException)5 HugeClient (com.baidu.hugegraph.driver.HugeClient)3 ExternalException (com.baidu.hugegraph.exception.ExternalException)3 ClientException (com.baidu.hugegraph.rest.ClientException)2 IndexLabel (com.baidu.hugegraph.structure.schema.IndexLabel)2 HugeClientBuilder (com.baidu.hugegraph.driver.HugeClientBuilder)1 LoadException (com.baidu.hugegraph.loader.exception.LoadException)1 Edge (com.baidu.hugegraph.structure.graph.Edge)1 Vertex (com.baidu.hugegraph.structure.graph.Vertex)1 Result (com.baidu.hugegraph.structure.gremlin.Result)1 ResultSet (com.baidu.hugegraph.structure.gremlin.ResultSet)1 EdgeLabel (com.baidu.hugegraph.structure.schema.EdgeLabel)1 VertexLabel (com.baidu.hugegraph.structure.schema.VertexLabel)1 Test (org.junit.Test)1