Search in sources :

Example 1 with TimelyResultProcessor

use of com.alibaba.maxgraph.rpc.TimelyResultProcessor 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

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 PreparedExecuteParam (com.alibaba.maxgraph.compiler.prepare.PreparedExecuteParam)1 PreparedTraversal (com.alibaba.maxgraph.compiler.prepare.PreparedTraversal)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 List (java.util.List)1 GraphTraversal (org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal)1 Element (org.apache.tinkerpop.gremlin.structure.Element)1