Search in sources :

Example 1 with SendOperator

use of io.dingodb.exec.operator.SendOperator in project dingo by dingodb.

the class Services method initNetService.

public static void initNetService() {
    NET.registerMessageListenerProvider(SimpleTag.RCV_READY_TAG, () -> ((message, channel) -> {
        String tag = TagUtil.fromBytes(message.toBytes());
        if (log.isDebugEnabled()) {
            log.debug("Received RCV_READY of tag {}.", tag);
        }
        SendOperator so = Services.rcvReadyFlag.put(tag, SendOperator.DUMMY);
        if (so != null) {
            so.wakeUp();
        }
    }));
    NET.registerMessageListenerProvider(SimpleTag.TASK_TAG, () -> (message, channel) -> {
        String taskStr = new String(message.toBytes(), StandardCharsets.UTF_8);
        if (log.isInfoEnabled()) {
            log.info("Received task: {}", taskStr);
        }
        try {
            Task task = TaskImpl.deserialize(taskStr);
            executorService.execute(() -> {
                task.init();
                task.run();
            });
        } catch (JsonProcessingException e) {
            throw new RuntimeException("Cannot deserialize received task.", e);
        }
    });
}
Also used : NetService(io.dingodb.net.NetService) NetError(io.dingodb.net.NetError) StoreServiceProvider(io.dingodb.store.api.StoreServiceProvider) MetaService(io.dingodb.meta.MetaService) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) SimpleTag(io.dingodb.net.SimpleTag) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) NetAddress(io.dingodb.net.NetAddress) Channel(io.dingodb.net.Channel) DingoException(io.dingodb.common.error.DingoException) StandardCharsets(java.nio.charset.StandardCharsets) Executors(java.util.concurrent.Executors) ConcurrentMap(java.util.concurrent.ConcurrentMap) Objects(java.util.Objects) SendOperator(io.dingodb.exec.operator.SendOperator) Slf4j(lombok.extern.slf4j.Slf4j) Optional(io.dingodb.common.util.Optional) StoreService(io.dingodb.store.api.StoreService) Task(io.dingodb.exec.base.Task) ExecutorService(java.util.concurrent.ExecutorService) TaskImpl(io.dingodb.exec.impl.TaskImpl) TagUtil(io.dingodb.exec.util.TagUtil) Task(io.dingodb.exec.base.Task) SendOperator(io.dingodb.exec.operator.SendOperator) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 2 with SendOperator

use of io.dingodb.exec.operator.SendOperator in project dingo by dingodb.

the class DingoJobVisitor method visit.

@Override
public Collection<Output> visit(@Nonnull DingoExchange rel) {
    Collection<Output> inputs = dingo(rel.getInput()).accept(this);
    List<Output> outputs = new LinkedList<>();
    TupleSchema schema = TupleSchema.fromRelDataType(rel.getRowType());
    for (Output input : inputs) {
        Task task = input.getTask();
        Location target = input.getTargetLocation();
        if (target == null) {
            target = Services.META.currentLocation();
        }
        if (!target.equals(task.getLocation())) {
            Id id = idGenerator.get();
            Id receiveId = idGenerator.get();
            SendOperator send = new SendOperator(target.getHost(), target.getPort(), receiveId, schema);
            send.setId(id);
            task.putOperator(send);
            input.setLink(send.getInput(0));
            ReceiveOperator receive = new ReceiveOperator(task.getHost(), task.getLocation().getPort(), schema);
            receive.setId(receiveId);
            receive.getSoleOutput().copyHint(input);
            Task rcvTask = job.getOrCreate(target);
            rcvTask.putOperator(receive);
            outputs.addAll(receive.getOutputs());
        } else {
            outputs.add(input);
        }
    }
    return outputs;
}
Also used : ReceiveOperator(io.dingodb.exec.operator.ReceiveOperator) Task(io.dingodb.exec.base.Task) Output(io.dingodb.exec.base.Output) TableId(io.dingodb.common.table.TableId) Id(io.dingodb.exec.base.Id) SendOperator(io.dingodb.exec.operator.SendOperator) LinkedList(java.util.LinkedList) TupleSchema(io.dingodb.common.table.TupleSchema) Location(io.dingodb.meta.Location)

Aggregations

Task (io.dingodb.exec.base.Task)2 SendOperator (io.dingodb.exec.operator.SendOperator)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 DingoException (io.dingodb.common.error.DingoException)1 TableId (io.dingodb.common.table.TableId)1 TupleSchema (io.dingodb.common.table.TupleSchema)1 Optional (io.dingodb.common.util.Optional)1 Id (io.dingodb.exec.base.Id)1 Output (io.dingodb.exec.base.Output)1 TaskImpl (io.dingodb.exec.impl.TaskImpl)1 ReceiveOperator (io.dingodb.exec.operator.ReceiveOperator)1 TagUtil (io.dingodb.exec.util.TagUtil)1 Location (io.dingodb.meta.Location)1 MetaService (io.dingodb.meta.MetaService)1 Channel (io.dingodb.net.Channel)1 NetAddress (io.dingodb.net.NetAddress)1 NetError (io.dingodb.net.NetError)1 NetService (io.dingodb.net.NetService)1 SimpleTag (io.dingodb.net.SimpleTag)1 StoreService (io.dingodb.store.api.StoreService)1