Search in sources :

Example 41 with Channel

use of com.alibaba.otter.shared.common.model.config.channel.Channel in project otter by alibaba.

the class PermitMonitorTest method init.

@BeforeClass
public void init() {
    // 初始化节点
    Mockit.setUpMock(ArbitrateConfigUtils.class, new Object() {

        @Mock
        public Channel getChannel(Long pipelineId) {
            Channel channel = new Channel();
            channel.setId(channelId);
            return channel;
        }

        @Mock
        public Pipeline getOppositePipeline(Long pipelineId) {
            Pipeline pipeline = new Pipeline();
            pipeline.setId(oppositePipelineId);
            return pipeline;
        }
    });
    zookeeper = getZookeeper();
    channelEvent = new ChannelArbitrateEvent();
    pipelineEvent = new PipelineArbitrateEvent();
}
Also used : Channel(com.alibaba.otter.shared.common.model.config.channel.Channel) ChannelArbitrateEvent(com.alibaba.otter.shared.arbitrate.impl.manage.ChannelArbitrateEvent) PipelineArbitrateEvent(com.alibaba.otter.shared.arbitrate.impl.manage.PipelineArbitrateEvent) Mock(mockit.Mock) Pipeline(com.alibaba.otter.shared.common.model.config.pipeline.Pipeline) BeforeClass(org.testng.annotations.BeforeClass)

Example 42 with Channel

use of com.alibaba.otter.shared.common.model.config.channel.Channel in project otter by alibaba.

the class DbLoadAction method buildContext.

private DbLoadContext buildContext(Identity identity) {
    DbLoadContext context = new DbLoadContext();
    context.setIdentity(identity);
    Channel channel = configClientService.findChannel(identity.getChannelId());
    Pipeline pipeline = configClientService.findPipeline(identity.getPipelineId());
    context.setChannel(channel);
    context.setPipeline(pipeline);
    return context;
}
Also used : DbLoadContext(com.alibaba.otter.node.etl.load.loader.db.context.DbLoadContext) Channel(com.alibaba.otter.shared.common.model.config.channel.Channel) Pipeline(com.alibaba.otter.shared.common.model.config.pipeline.Pipeline)

Example 43 with Channel

use of com.alibaba.otter.shared.common.model.config.channel.Channel in project otter by alibaba.

the class FileLoadAction method buildContext.

private FileLoadContext buildContext(Identity identity) {
    FileLoadContext context = new FileLoadContext();
    context.setIdentity(identity);
    Channel channel = configClientService.findChannel(identity.getChannelId());
    Pipeline pipeline = configClientService.findPipeline(identity.getPipelineId());
    context.setChannel(channel);
    context.setPipeline(pipeline);
    return context;
}
Also used : Channel(com.alibaba.otter.shared.common.model.config.channel.Channel) FileLoadContext(com.alibaba.otter.node.etl.load.loader.db.context.FileLoadContext) Pipeline(com.alibaba.otter.shared.common.model.config.pipeline.Pipeline)

Example 44 with Channel

use of com.alibaba.otter.shared.common.model.config.channel.Channel in project otter by alibaba.

the class AbstractOperationInterceptor method updateMark.

/**
     * 更新一下事务标记
     */
private void updateMark(DbLoadContext context, DbDialect dialect, int threadId, String sql, boolean needInfo, String hint) {
    Identity identity = context.getIdentity();
    Channel channel = context.getChannel();
    // 获取dbDialect
    String markTableName = context.getPipeline().getParameters().getSystemSchema() + "." + context.getPipeline().getParameters().getSystemMarkTable();
    String markTableColumn = context.getPipeline().getParameters().getSystemMarkTableColumn();
    synchronized (dialect.getJdbcTemplate()) {
        if (tableCheckStatus.contains(dialect.getJdbcTemplate()) == false) {
            init(dialect.getJdbcTemplate(), markTableName, markTableColumn);
            tableCheckStatus.add(dialect.getJdbcTemplate());
        }
    }
    int affectedCount = 0;
    if (needInfo) {
        String infoColumn = context.getPipeline().getParameters().getSystemMarkTableInfo();
        // 记录一下channelInfo
        String info = context.getPipeline().getParameters().getChannelInfo();
        String esql = MessageFormat.format(sql, new Object[] { markTableName, markTableColumn, infoColumn });
        if (hint != null) {
            esql = hint + esql;
        }
        affectedCount = dialect.getJdbcTemplate().update(esql, new Object[] { threadId, channel.getId(), info });
    } else {
        String esql = MessageFormat.format(sql, new Object[] { markTableName, markTableColumn });
        if (hint != null) {
            esql = hint + esql;
        }
        affectedCount = dialect.getJdbcTemplate().update(esql, new Object[] { threadId, channel.getId() });
    }
    if (affectedCount <= 0) {
        logger.warn("## update {} failed by [{}]", markTableName, threadId);
    } else {
        if (logger.isInfoEnabled()) {
            logger.debug("Interceptor For [{}]", identity);
        }
    }
}
Also used : Channel(com.alibaba.otter.shared.common.model.config.channel.Channel) Identity(com.alibaba.otter.shared.etl.model.Identity)

Example 45 with Channel

use of com.alibaba.otter.shared.common.model.config.channel.Channel in project otter by alibaba.

the class ArbitrateConfigImpl method findOppositePipeline.

public Pipeline findOppositePipeline(Long pipelineId) {
    Long channelId = channelMapping.get(pipelineId);
    Channel channel = channelCache.get(channelId);
    List<Pipeline> pipelines = channel.getPipelines();
    for (Pipeline pipeline : pipelines) {
        if (pipeline.getId().equals(pipelineId) == false) {
            // 这里假定pipeline只有两个
            return pipeline;
        }
    }
    return null;
}
Also used : Channel(com.alibaba.otter.shared.common.model.config.channel.Channel) Pipeline(com.alibaba.otter.shared.common.model.config.pipeline.Pipeline)

Aggregations

Channel (com.alibaba.otter.shared.common.model.config.channel.Channel)77 Pipeline (com.alibaba.otter.shared.common.model.config.pipeline.Pipeline)38 Mock (mockit.Mock)16 ArrayList (java.util.ArrayList)13 ManagerException (com.alibaba.otter.manager.biz.common.exceptions.ManagerException)10 RepeatConfigureException (com.alibaba.otter.manager.biz.common.exceptions.RepeatConfigureException)10 ChannelArbitrateEvent (com.alibaba.otter.shared.arbitrate.impl.manage.ChannelArbitrateEvent)10 BeforeClass (org.testng.annotations.BeforeClass)10 PipelineArbitrateEvent (com.alibaba.otter.shared.arbitrate.impl.manage.PipelineArbitrateEvent)9 InvalidConfigureException (com.alibaba.otter.manager.biz.common.exceptions.InvalidConfigureException)8 NodeArbitrateEvent (com.alibaba.otter.shared.arbitrate.impl.manage.NodeArbitrateEvent)8 Node (com.alibaba.otter.shared.common.model.config.node.Node)7 Event (com.alibaba.otter.shared.communication.core.model.Event)7 Test (org.testng.annotations.Test)7 ChannelStatus (com.alibaba.otter.shared.common.model.config.channel.ChannelStatus)6 DataMediaPair (com.alibaba.otter.shared.common.model.config.data.DataMediaPair)6 HashMap (java.util.HashMap)6 ChannelDO (com.alibaba.otter.manager.biz.config.channel.dal.dataobject.ChannelDO)5 SystemParameter (com.alibaba.otter.shared.common.model.config.parameter.SystemParameter)5 Identity (com.alibaba.otter.shared.etl.model.Identity)5