Search in sources :

Example 6 with Task

use of com.baidu.hugegraph.structure.Task in project incubator-hugegraph-toolchain by apache.

the class HugeGraphCommand method execute.

private void execute(String subCmd, JCommander jCommander) {
    this.checkMainParams();
    switch(subCmd) {
        case "backup":
            if (this.timeout() < BACKUP_DEFAULT_TIMEOUT) {
                this.timeout(BACKUP_DEFAULT_TIMEOUT);
            }
            Printer.print("Graph '%s' start backup!", this.graph());
            SubCommands.Backup backup = this.subCommand(subCmd);
            BackupManager backupManager = manager(BackupManager.class);
            backupManager.init(backup);
            backupManager.backup(backup.types());
            break;
        case "restore":
            GraphsManager graphsManager = manager(GraphsManager.class);
            GraphMode mode = graphsManager.mode(this.graph());
            E.checkState(mode.maintaining(), "Invalid mode '%s' of graph '%s' for restore " + "sub-command", mode, this.graph());
            Printer.print("Graph '%s' start restore in mode '%s'!", this.graph(), mode);
            SubCommands.Restore restore = this.subCommand(subCmd);
            RestoreManager restoreManager = manager(RestoreManager.class);
            restoreManager.init(restore);
            restoreManager.mode(mode);
            restoreManager.restore(restore.types());
            break;
        case "migrate":
            SubCommands.Migrate migrate = this.subCommand(subCmd);
            Printer.print("Migrate graph '%s' from '%s' to '%s' as '%s'", this.graph(), this.url(), migrate.targetUrl(), migrate.targetGraph());
            // Backup source graph
            if (this.timeout() < BACKUP_DEFAULT_TIMEOUT) {
                this.timeout(BACKUP_DEFAULT_TIMEOUT);
            }
            backup = convMigrate2Backup(migrate);
            backupManager = manager(BackupManager.class);
            backupManager.init(backup);
            backupManager.backup(backup.types());
            // Restore source graph to target graph
            this.url(migrate.targetUrl());
            this.graph(migrate.targetGraph());
            this.username(migrate.targetUsername());
            this.password(migrate.targetPassword());
            this.timeout(migrate.targetTimeout());
            this.trustStoreFile(migrate.targetTrustStoreFile());
            this.trustStorePassword(migrate.targetTrustStorePassword());
            graphsManager = manager(GraphsManager.class);
            GraphMode origin = graphsManager.mode(migrate.targetGraph());
            // Set target graph mode
            mode = migrate.mode();
            E.checkState(mode.maintaining(), "Invalid mode '%s' of graph '%s' for restore", mode, migrate.targetGraph());
            graphsManager.mode(migrate.targetGraph(), mode);
            // Restore
            Printer.print("Graph '%s' start restore in mode '%s'!", migrate.targetGraph(), migrate.mode());
            String directory = backupManager.directory().directory();
            restore = convMigrate2Restore(migrate, directory);
            restoreManager = manager(RestoreManager.class);
            restoreManager.init(restore);
            restoreManager.mode(mode);
            restoreManager.restore(restore.types());
            // Restore target graph mode
            graphsManager.mode(migrate.targetGraph(), origin);
            break;
        case "dump":
            Printer.print("Graph '%s' start dump!", this.graph());
            SubCommands.DumpGraph dump = this.subCommand(subCmd);
            DumpGraphManager dumpManager = manager(DumpGraphManager.class);
            dumpManager.init(dump);
            dumpManager.dumpFormatter(dump.formatter());
            dumpManager.dump();
            break;
        case "graph-create":
            SubCommands.GraphCreate graphCreate = this.subCommand(subCmd);
            if (timeout() < DEFAULT_GRAPH_CREATE_TIMEOUT) {
                this.timeout(DEFAULT_GRAPH_CREATE_TIMEOUT);
            }
            graphsManager = manager(GraphsManager.class);
            graphsManager.create(graphCreate.name(), graphCreate.config());
            Printer.print("Graph '%s' is created", graphCreate.name());
            break;
        case "graph-clone":
            SubCommands.GraphClone graphClone = this.subCommand(subCmd);
            if (timeout() < DEFAULT_GRAPH_CREATE_TIMEOUT) {
                this.timeout(DEFAULT_GRAPH_CREATE_TIMEOUT);
            }
            graphsManager = manager(GraphsManager.class);
            graphsManager.clone(graphClone.name(), graphClone.cloneGraphName());
            Printer.print("Graph '%s' is created(cloned from '%s')", graphClone.name(), graphClone.cloneGraphName());
            break;
        case "graph-list":
            graphsManager = manager(GraphsManager.class);
            Printer.printList("Graphs", graphsManager.list());
            break;
        case "graph-get":
            graphsManager = manager(GraphsManager.class);
            Printer.printMap("Graph info", graphsManager.get(this.graph()));
            break;
        case "graph-clear":
            SubCommands.GraphClear graphClear = this.subCommand(subCmd);
            if (timeout() < DEFAULT_GRAPH_CLEAR_TIMEOUT) {
                this.timeout(DEFAULT_GRAPH_CLEAR_TIMEOUT);
            }
            graphsManager = manager(GraphsManager.class);
            graphsManager.clear(this.graph(), graphClear.confirmMessage());
            Printer.print("Graph '%s' is cleared", this.graph());
            break;
        case "graph-drop":
            SubCommands.GraphDrop graphDrop = this.subCommand(subCmd);
            if (timeout() < DEFAULT_GRAPH_CLEAR_TIMEOUT) {
                this.timeout(DEFAULT_GRAPH_CLEAR_TIMEOUT);
            }
            graphsManager = manager(GraphsManager.class);
            graphsManager.drop(this.graph(), graphDrop.confirmMessage());
            Printer.print("Graph '%s' is dropped", this.graph());
            break;
        case "graph-mode-set":
            SubCommands.GraphModeSet graphModeSet = this.subCommand(subCmd);
            graphsManager = manager(GraphsManager.class);
            graphsManager.mode(this.graph(), graphModeSet.mode());
            Printer.print("Set graph '%s' mode to '%s'", this.graph(), graphModeSet.mode());
            break;
        case "graph-mode-get":
            graphsManager = manager(GraphsManager.class);
            Printer.printKV("Graph mode", graphsManager.mode(this.graph()));
            break;
        case "gremlin-execute":
            SubCommands.Gremlin gremlin = this.subCommand(subCmd);
            GremlinManager gremlinManager = manager(GremlinManager.class);
            Printer.print("Run gremlin script");
            ResultSet result = gremlinManager.execute(gremlin.script(), gremlin.bindings(), gremlin.language(), gremlin.aliases());
            Iterator<Result> iterator = result.iterator();
            while (iterator.hasNext()) {
                Printer.print(iterator.next().getString());
            }
            break;
        case "gremlin-schedule":
            SubCommands.GremlinJob job = this.subCommand(subCmd);
            gremlinManager = manager(GremlinManager.class);
            Printer.print("Run gremlin script as async job");
            long taskId = gremlinManager.executeAsTask(job.script(), job.bindings(), job.language());
            Printer.printKV("Task id", taskId);
            break;
        case "task-list":
            SubCommands.TaskList taskList = this.subCommand(subCmd);
            TasksManager tasksManager = manager(TasksManager.class);
            List<Task> tasks = tasksManager.list(taskList.status(), taskList.limit());
            List<Object> results = tasks.stream().map(Task::asMap).collect(Collectors.toList());
            Printer.printList("Tasks", results);
            break;
        case "task-get":
            SubCommands.TaskGet taskGet = this.subCommand(subCmd);
            tasksManager = manager(TasksManager.class);
            Printer.printKV("Task info", tasksManager.get(taskGet.taskId()).asMap());
            break;
        case "task-delete":
            SubCommands.TaskDelete taskDelete = this.subCommand(subCmd);
            tasksManager = manager(TasksManager.class);
            tasksManager.delete(taskDelete.taskId());
            Printer.print("Task '%s' is deleted", taskDelete.taskId());
            break;
        case "task-cancel":
            SubCommands.TaskCancel taskCancel = this.subCommand(subCmd);
            tasksManager = manager(TasksManager.class);
            tasksManager.cancel(taskCancel.taskId());
            Printer.print("Task '%s' is cancelled", taskCancel.taskId());
            break;
        case "task-clear":
            SubCommands.TaskClear taskClear = this.subCommand(subCmd);
            tasksManager = manager(TasksManager.class);
            tasksManager.clear(taskClear.force());
            Printer.print("Tasks are cleared[force=%s]", taskClear.force());
            break;
        case "auth-backup":
            Printer.print("Auth backup start...");
            SubCommands.AuthBackup authBackup = this.subCommand(subCmd);
            AuthBackupRestoreManager authBackupManager = manager(AuthBackupRestoreManager.class);
            authBackupManager.init(authBackup);
            authBackupManager.backup(authBackup.types());
            break;
        case "auth-restore":
            Printer.print("Auth restore start...");
            SubCommands.AuthRestore authRestore = this.subCommand(subCmd);
            AuthBackupRestoreManager authRestoreManager = manager(AuthBackupRestoreManager.class);
            authRestoreManager.init(authRestore);
            authRestoreManager.restore(authRestore.types());
            break;
        default:
            throw new ParameterException(String.format("Invalid sub-command: %s", subCmd));
    }
}
Also used : Task(com.baidu.hugegraph.structure.Task) GraphMode(com.baidu.hugegraph.structure.constant.GraphMode) AuthBackupRestoreManager(com.baidu.hugegraph.manager.AuthBackupRestoreManager) RestoreManager(com.baidu.hugegraph.manager.RestoreManager) Result(com.baidu.hugegraph.structure.gremlin.Result) DumpGraphManager(com.baidu.hugegraph.manager.DumpGraphManager) ResultSet(com.baidu.hugegraph.structure.gremlin.ResultSet) GraphsManager(com.baidu.hugegraph.manager.GraphsManager) ParameterException(com.beust.jcommander.ParameterException) TasksManager(com.baidu.hugegraph.manager.TasksManager) BackupManager(com.baidu.hugegraph.manager.BackupManager) GremlinManager(com.baidu.hugegraph.manager.GremlinManager) AuthBackupRestoreManager(com.baidu.hugegraph.manager.AuthBackupRestoreManager)

Example 7 with Task

use of com.baidu.hugegraph.structure.Task in project incubator-hugegraph-toolchain by apache.

the class EdgeLabelTest method testRemoveEdgeLabelAsync.

@Test
public void testRemoveEdgeLabelAsync() {
    SchemaManager schema = schema();
    EdgeLabel write = schema.edgeLabel("write").link("person", "book").properties("date", "weight").userdata("multiplicity", "one-to-many").userdata("icon", "picture2").create();
    Assert.assertNotNull(write);
    // Remove edge label async and wait
    long taskId = schema.removeEdgeLabelAsync("write");
    Task task = task().waitUntilTaskCompleted(taskId, 10);
    Assert.assertTrue(task.completed());
}
Also used : Task(com.baidu.hugegraph.structure.Task) EdgeLabel(com.baidu.hugegraph.structure.schema.EdgeLabel) SchemaManager(com.baidu.hugegraph.driver.SchemaManager) Test(org.junit.Test)

Example 8 with Task

use of com.baidu.hugegraph.structure.Task in project incubator-hugegraph-toolchain by apache.

the class ExecuteHistoryService method get.

public ExecuteHistory get(int connId, int id) {
    HugeClient client = this.getClient(connId);
    ExecuteHistory history = this.mapper.selectById(id);
    if (history.getType().equals(ExecuteType.GREMLIN_ASYNC)) {
        try {
            Task task = client.task().get(history.getAsyncId());
            history.setDuration(task.updateTime() - task.createTime());
            history.setAsyncStatus(task.status().toUpperCase());
        } catch (Exception e) {
            history.setDuration(0L);
            history.setAsyncStatus(AsyncTaskStatus.UNKNOWN);
        }
    }
    return history;
}
Also used : HugeClient(com.baidu.hugegraph.driver.HugeClient) Task(com.baidu.hugegraph.structure.Task) ExecuteHistory(com.baidu.hugegraph.entity.query.ExecuteHistory) InternalException(com.baidu.hugegraph.exception.InternalException)

Example 9 with Task

use of com.baidu.hugegraph.structure.Task in project incubator-hugegraph-toolchain by apache.

the class AsyncTaskController method delete.

@DeleteMapping
public void delete(@PathVariable("connId") int connId, @RequestParam("ids") List<Integer> ids) {
    for (int id : ids) {
        Task task = this.service.get(connId, id);
        if (task == null) {
            throw new ExternalException("async.task.not-exist.id", id);
        }
        this.service.remove(connId, id);
    }
}
Also used : Task(com.baidu.hugegraph.structure.Task) ExternalException(com.baidu.hugegraph.exception.ExternalException) DeleteMapping(org.springframework.web.bind.annotation.DeleteMapping)

Example 10 with Task

use of com.baidu.hugegraph.structure.Task in project incubator-hugegraph-toolchain by apache.

the class ExecuteHistoryService method list.

public IPage<ExecuteHistory> list(int connId, long current, long pageSize) {
    HugeClient client = this.getClient(connId);
    QueryWrapper<ExecuteHistory> query = Wrappers.query();
    query.eq("conn_id", connId).orderByDesc("create_time");
    Page<ExecuteHistory> page = new Page<>(current, pageSize);
    IPage<ExecuteHistory> results = this.mapper.selectPage(page, query);
    int limit = this.config.get(HubbleOptions.EXECUTE_HISTORY_SHOW_LIMIT);
    if (results.getTotal() > limit) {
        log.debug("Execute history total records: {}", results.getTotal());
        results.setTotal(limit);
    }
    // Get the status of successful execution of asynchronous tasks
    Instant now = HubbleUtil.nowTime();
    results.getRecords().forEach((p) -> {
        if (p.getType().equals(ExecuteType.GREMLIN_ASYNC)) {
            try {
                Task task = client.task().get(p.getAsyncId());
                long endDate = task.updateTime() > 0 ? task.updateTime() : now.getLong(ChronoField.INSTANT_SECONDS);
                p.setDuration(endDate - task.createTime());
                p.setAsyncStatus(task.status().toUpperCase());
            } catch (Exception e) {
                p.setDuration(0L);
                p.setAsyncStatus(AsyncTaskStatus.UNKNOWN);
            }
        }
    });
    return results;
}
Also used : HugeClient(com.baidu.hugegraph.driver.HugeClient) Task(com.baidu.hugegraph.structure.Task) ExecuteHistory(com.baidu.hugegraph.entity.query.ExecuteHistory) Instant(java.time.Instant) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) IPage(com.baomidou.mybatisplus.core.metadata.IPage) InternalException(com.baidu.hugegraph.exception.InternalException)

Aggregations

Task (com.baidu.hugegraph.structure.Task)18 Test (org.junit.Test)12 IndexLabel (com.baidu.hugegraph.structure.schema.IndexLabel)7 HashSet (java.util.HashSet)4 HugeClient (com.baidu.hugegraph.driver.HugeClient)3 ArrayList (java.util.ArrayList)3 SchemaManager (com.baidu.hugegraph.driver.SchemaManager)2 ExecuteHistory (com.baidu.hugegraph.entity.query.ExecuteHistory)2 InternalException (com.baidu.hugegraph.exception.InternalException)2 ResultSet (com.baidu.hugegraph.structure.gremlin.ResultSet)2 EdgeLabel (com.baidu.hugegraph.structure.schema.EdgeLabel)2 GremlinRequest (com.baidu.hugegraph.api.gremlin.GremlinRequest)1 TaskAPI (com.baidu.hugegraph.api.task.TaskAPI)1 TasksWithPage (com.baidu.hugegraph.api.task.TasksWithPage)1 ExternalException (com.baidu.hugegraph.exception.ExternalException)1 AuthBackupRestoreManager (com.baidu.hugegraph.manager.AuthBackupRestoreManager)1 BackupManager (com.baidu.hugegraph.manager.BackupManager)1 DumpGraphManager (com.baidu.hugegraph.manager.DumpGraphManager)1 GraphsManager (com.baidu.hugegraph.manager.GraphsManager)1 GremlinManager (com.baidu.hugegraph.manager.GremlinManager)1