Search in sources :

Example 1 with PreparedExecuteParam

use of com.alibaba.maxgraph.compiler.prepare.PreparedExecuteParam in project GraphScope by alibaba.

the class MixedOpProcessor method processGraphTraversal.

@Override
protected void processGraphTraversal(String script, Context context, Object traversal, long timeout) {
    String queryId = String.valueOf(ThreadLocalRandom.current().nextLong());
    Stopwatch timer = Stopwatch.createStarted();
    QueryType queryType = QueryType.EXECUTE;
    if (traversal instanceof PreparedTraversal) {
        queryType = QueryType.PREPARE;
    } else if (traversal instanceof PreparedExecuteParam) {
        queryType = QueryType.QUERY;
    }
    Logging.query(this.graphName, com.alibaba.maxgraph.proto.RoleType.FRONTEND, this.serverId, queryId, queryType, QueryEvent.FRONT_RECEIVED, null, null, null, script);
    try {
        Long totalResultNum = doProcessGraphTraversal(script, context, traversal, timeout, queryId, timer);
        Logging.query(this.graphName, com.alibaba.maxgraph.proto.RoleType.FRONTEND, this.serverId, queryId, QueryType.EXECUTE, QueryEvent.FRONT_FINISH, timer.elapsed(TimeUnit.NANOSECONDS), totalResultNum, true, script);
    } catch (Exception e) {
        Logging.query(this.graphName, com.alibaba.maxgraph.proto.RoleType.FRONTEND, this.serverId, queryId, QueryType.EXECUTE, QueryEvent.FRONT_FINISH, timer.elapsed(TimeUnit.NANOSECONDS), null, false, script);
        throw new RuntimeException(e);
    }
}
Also used : PreparedTraversal(com.alibaba.maxgraph.compiler.prepare.PreparedTraversal) Stopwatch(com.google.common.base.Stopwatch) PreparedExecuteParam(com.alibaba.maxgraph.compiler.prepare.PreparedExecuteParam) QueryType(com.alibaba.maxgraph.logging.LogEvents.QueryType) RetryGremlinException(com.alibaba.maxgraph.compiler.exception.RetryGremlinException)

Example 2 with PreparedExecuteParam

use of com.alibaba.maxgraph.compiler.prepare.PreparedExecuteParam in project GraphScope by alibaba.

the class MixedOpProcessor method doProcessGraphTraversal.

private Long doProcessGraphTraversal(String script, Context context, Object traversal, long timeout, String queryId, Stopwatch timer) throws Exception {
    Long totalResultNum = 0L;
    Pair<GraphSchema, Long> snapshotSchema;
    GraphSchema schema;
    if (traversal instanceof GraphTraversal || traversal instanceof DfsTraversal) {
        final int resultIterationBatchSize = (Integer) context.getRequestMessage().optionalArgs(Tokens.ARGS_BATCH_SIZE).orElse(this.resultIterationBatchSize);
        NettyVertexRpcProcessor nettyVertexRpcProcessor = new NettyVertexRpcProcessor(context, resultIterationBatchSize, false);
        AbstractResultProcessor nettyResultProcessor = new NettyResultProcessor(queryId, script, context, executeConfig.getBatchQuerySize(), resultIterationBatchSize, false);
        totalResultNum = processQueryTraversal(script, traversal, timeout, queryId, timer, this.remoteRpcConnector, nettyVertexRpcProcessor, nettyResultProcessor);
    } else {
        snapshotSchema = this.schemaFetcher.getSchemaSnapshotPair();
        schema = snapshotSchema.getLeft();
        if (traversal instanceof PreparedTraversal) {
            throw new UnsupportedOperationException();
        } else if (traversal instanceof PreparedExecuteParam) {
            throw new UnsupportedOperationException();
        } else if (traversal instanceof ShowProcessListQuery) {
            TimelyResultProcessor nettyResultProcessor = newNettyResultProcessor(queryId, script, context, graph, schema);
            timelyExecutor.showProcessList(nettyResultProcessor);
        } else if (traversal instanceof CancelDataflow) {
            NettyResultProcessor nettyResultProcessor = newNettyResultProcessor(queryId, script, context, graph, schema);
            timelyExecutor.cancelDataflow(nettyResultProcessor, ((CancelDataflow) traversal).queryId);
        } else if (traversal instanceof RecordManager) {
            Object result = processRecordManager(RecordManager.class.cast(traversal));
            writeResultList(context, Lists.newArrayList(result), ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof EstimateRequest) {
            writeResultList(context, Lists.newArrayList(processEstimateManager((EstimateRequest) traversal, timeout)), ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof StatisticsRequest) {
            CostDataStatistics costDataStatistics = CostDataStatistics.getInstance();
            writeResultList(context, Lists.newArrayList(costDataStatistics.formatJson()), ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof ShowPlanPathListRequest) {
            ShowPlanPathListRequest showPlanPathListRequest = (ShowPlanPathListRequest) traversal;
            writeResultList(context, Lists.newArrayList(buildCostPathList(showPlanPathListRequest.getTraversal())), ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof Element) {
            writeResultList(context, Lists.newArrayList((Element) traversal), ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof List) {
            writeResultList(context, (List) traversal, ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof GraphSchema) {
            writeResultList(context, Lists.newArrayList(((GraphSchema) traversal).formatJson()), ResponseStatusCode.SUCCESS);
        } else if (traversal instanceof String) {
            writeResultList(context, Lists.newArrayList(traversal), ResponseStatusCode.SUCCESS);
        } else if (traversal != null && (!(traversal instanceof String) || !StringUtils.isEmpty(traversal.toString()))) {
            throw new IllegalArgumentException(traversal.toString());
        }
    }
    return totalResultNum;
}
Also used : PreparedTraversal(com.alibaba.maxgraph.compiler.prepare.PreparedTraversal) CancelDataflow(com.alibaba.maxgraph.sdkcommon.graph.CancelDataflow) Element(org.apache.tinkerpop.gremlin.structure.Element) GraphElement(com.alibaba.maxgraph.compiler.api.schema.GraphElement) DfsTraversal(com.alibaba.maxgraph.compiler.dfs.DfsTraversal) TimelyResultProcessor(com.alibaba.maxgraph.rpc.TimelyResultProcessor) GraphSchema(com.alibaba.maxgraph.compiler.api.schema.GraphSchema) CostDataStatistics(com.alibaba.maxgraph.compiler.cost.statistics.CostDataStatistics) GraphTraversal(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal) ShowProcessListQuery(com.alibaba.maxgraph.sdkcommon.graph.ShowProcessListQuery) List(java.util.List) ShowPlanPathListRequest(com.alibaba.maxgraph.sdkcommon.graph.ShowPlanPathListRequest) EstimateRequest(com.alibaba.maxgraph.sdkcommon.graph.EstimateRequest) StatisticsRequest(com.alibaba.maxgraph.sdkcommon.graph.StatisticsRequest) RecordManager(com.alibaba.maxgraph.structure.manager.record.RecordManager) PreparedExecuteParam(com.alibaba.maxgraph.compiler.prepare.PreparedExecuteParam)

Aggregations

PreparedExecuteParam (com.alibaba.maxgraph.compiler.prepare.PreparedExecuteParam)2 PreparedTraversal (com.alibaba.maxgraph.compiler.prepare.PreparedTraversal)2 GraphElement (com.alibaba.maxgraph.compiler.api.schema.GraphElement)1 GraphSchema (com.alibaba.maxgraph.compiler.api.schema.GraphSchema)1 CostDataStatistics (com.alibaba.maxgraph.compiler.cost.statistics.CostDataStatistics)1 DfsTraversal (com.alibaba.maxgraph.compiler.dfs.DfsTraversal)1 RetryGremlinException (com.alibaba.maxgraph.compiler.exception.RetryGremlinException)1 QueryType (com.alibaba.maxgraph.logging.LogEvents.QueryType)1 TimelyResultProcessor (com.alibaba.maxgraph.rpc.TimelyResultProcessor)1 CancelDataflow (com.alibaba.maxgraph.sdkcommon.graph.CancelDataflow)1 EstimateRequest (com.alibaba.maxgraph.sdkcommon.graph.EstimateRequest)1 ShowPlanPathListRequest (com.alibaba.maxgraph.sdkcommon.graph.ShowPlanPathListRequest)1 ShowProcessListQuery (com.alibaba.maxgraph.sdkcommon.graph.ShowProcessListQuery)1 StatisticsRequest (com.alibaba.maxgraph.sdkcommon.graph.StatisticsRequest)1 RecordManager (com.alibaba.maxgraph.structure.manager.record.RecordManager)1 Stopwatch (com.google.common.base.Stopwatch)1 List (java.util.List)1 GraphTraversal (org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal)1 Element (org.apache.tinkerpop.gremlin.structure.Element)1