Examples of TerminEventData


Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

            // load stage
            EtlEventData ldata1 = loadEvent.await(pipelineId);
            loadEvent.single(ldata1);
            Long p1 = ldata1.getProcessId();

            TerminEventData terminData1 = new TerminEventData();
            terminData1.setPipelineId(pipelineId);
            terminData1.setProcessId(p1);
            terminEvent.ack(terminData1);// 发送ack信号,删除termin节点

        } catch (InterruptedException e) {
            want.fail();
        }
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

            destoryTermin(3L);
        }
    }

    private void initTermin(Long processId) {
        TerminEventData data = new TerminEventData();
        data.setPipelineId(pipelineId);
        data.setProcessId(processId);
        data.setType(TerminType.NORMAL);

        byte[] bytes = JsonUtils.marshalToByte(data);
        zookeeper.create(StagePathUtils.getTermin(pipelineId, processId), bytes, CreateMode.PERSISTENT);

    }
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

        // 构建termin信号
        List<Long> processIds = new ArrayList<Long>(progress.keySet());
        for (Long processId : processIds) {
            EtlEventData eventData = progress.get(processId).getData();

            TerminEventData data = new TerminEventData();
            data.setPipelineId(getPipelineId());
            data.setType(type);
            data.setCode("channel");
            data.setDesc(type.toString());
            data.setProcessId(processId);
            if (eventData != null) {
                data.setBatchId(eventData.getBatchId());
                data.setCurrNid(eventData.getCurrNid());
                data.setStartTime(eventData.getStartTime());
                data.setEndTime(eventData.getEndTime());
                data.setFirstTime(eventData.getFirstTime());
                data.setNumber(eventData.getNumber());
                data.setSize(eventData.getSize());
                data.setExts(eventData.getExts());
            }
            offerTermin(data);
            progress.remove(processId);
        }
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

            // }

            data.setEndTime(new Date().getTime());// 返回当前时间

            // 调用Termin信号
            TerminEventData termin = new TerminEventData();
            termin.setPipelineId(data.getPipelineId());
            termin.setProcessId(data.getProcessId());
            termin.setStartTime(data.getStartTime());
            termin.setEndTime(data.getEndTime());
            termin.setFirstTime(data.getFirstTime());
            termin.setNumber(data.getNumber());
            termin.setBatchId(data.getBatchId());
            termin.setSize(data.getSize());
            termin.setExts(data.getExts());
            termin.setType(TerminType.NORMAL);
            termin.setCode("setl");
            termin.setDesc("");
            termin.setCurrNid(ArbitrateConfigUtils.getCurrentNid());
            terminEvent.single(termin);
        } finally {
            // // 最后一步释放锁
            // DistributedLock lock = getLock(data.getPipelineId());
            // try {
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

    }

    private boolean processTermin(boolean lastStatus, Long batchId, Long processId) throws InterruptedException {
        int retry = 0;
        SelectException exception = null;
        TerminEventData terminData = null;
        while (retry++ < 30) {
            // 因为存在网络因素,而且在Load进行termin处理时,因为是异步处理,有一定的概率会出现termin不按顺序过来
            terminData = arbitrateEventService.terminEvent().await(pipelineId);
            Long terminBatchId = terminData.getBatchId();
            Long terminProcessId = terminData.getProcessId();

            if (terminBatchId == null && processId != -1L && !processId.equals(terminProcessId)) {
                // 针对manager发起rollback,terminBatchId可能为null,需要特殊处理下
                exception = new SelectException("unmatched processId, SelectTask batchId = " + batchId
                                                + " processId = " + processId + " and Termin Event: "
                                                + terminData.toString());
                Thread.sleep(1000); // sleep 1秒,等新的数据包
            } else if (terminBatchId != null && batchId != -1L && !batchId.equals(terminBatchId)) {
                exception = new SelectException("unmatched terminId, SelectTask batchId = " + batchId + " processId = "
                                                + processId + " and Termin Event: " + terminData.toString());
                Thread.sleep(1000); // sleep 1秒,等新的数据包
            } else {
                exception = null; // batchId/processId对上了,退出
                break;
            }
        }

        if (exception != null) {
            throw exception;
        }

        if (needCheck) {
            checkContinueWork();
        }

        boolean status = terminData.getType().isNormal();
        if (lastStatus == false && status == true) {
            // 上一批失败,这一批成功,说明调度有问题
            throw new SelectException(
                                      String.format("last status is rollback , but now [batchId:%d , processId:%d] is ack",
                                                    batchId, terminData.getProcessId()));
        }

        if (terminData.getType().isNormal()) {
            ack(batchId);
            sendDelayStat(pipelineId, terminData.getEndTime(), terminData.getFirstTime());
        } else {
            rollback(batchId);
        }

        arbitrateEventService.terminEvent().ack(terminData); // 先发送对应的数据
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

            // 并且发送一次报警信息,系统不太正常了,超过一定时间一次都没有拿到对应的数据
            // 可能出现的情况:
            // 1. 主备发生切换,定位position花费了过久的时间
            // 2. MysqlEventParser工作不正常,一直拿不到数据,比如数据库挂了,但是又没通知其进行主备切换
            TerminEventData errorEventData = new TerminEventData();
            errorEventData.setPipelineId(pipelineId);
            errorEventData.setType(TerminType.WARNING);
            errorEventData.setCode("mainstem");
            errorEventData.setDesc(String.format(DETECTING_FAILED_MESSAGE,
                pipelineId,
                String.valueOf(detectingIntervalInSeconds * failedCount)));
            arbitrateEventService.terminEvent().single(errorEventData);
        }
    }
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

    private Long                  pipelineId;
    private ArbitrateEventService arbitrateEventService;

    public void sendAlarm(String destination, String msg) {
        TerminEventData errorEventData = new TerminEventData();
        errorEventData.setPipelineId(pipelineId);
        errorEventData.setType(TerminType.WARNING);
        errorEventData.setCode("canal");
        errorEventData.setDesc(destination + ":" + msg);
        arbitrateEventService.terminEvent().single(errorEventData);
    }
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

    protected void sendRollbackTermin(long pipelineId, Throwable exception) {
        sendRollbackTermin(pipelineId, ExceptionUtils.getFullStackTrace(exception));
    }

    protected void sendRollbackTermin(long pipelineId, String message) {
        TerminEventData errorEventData = new TerminEventData();
        errorEventData.setPipelineId(pipelineId);
        errorEventData.setType(TerminType.ROLLBACK);
        errorEventData.setCode("setl");
        errorEventData.setDesc(message);
        arbitrateEventService.terminEvent().single(errorEventData);
        // 每次发送完报警后,sleep一段时间,继续做后面的事
        try {
            Thread.sleep(3000 + RandomUtils.nextInt(3000));
        } catch (InterruptedException e) {
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

    /**
     * 自动处理数据为null的情况,重新发一遍数据
     */
    protected void processMissData(long pipelineId, String message) {
        TerminEventData errorEventData = new TerminEventData();
        errorEventData.setPipelineId(pipelineId);
        errorEventData.setType(TerminType.RESTART);
        errorEventData.setCode("setl");
        errorEventData.setDesc(message);
        arbitrateEventService.terminEvent().single(errorEventData);
    }
View Full Code Here

Examples of com.alibaba.otter.shared.arbitrate.model.TerminEventData

    }

    private boolean processTermin(boolean lastStatus, Long batchId, Long processId) throws InterruptedException {
        int retry = 0;
        SelectException exception = null;
        TerminEventData terminData = null;
        while (retry++ < 30) {
            // 因为存在网络因素,而且在Load进行termin处理时,因为是异步处理,有一定的概率会出现termin不按顺序过来
            terminData = arbitrateEventService.terminEvent().await(pipelineId);
            Long terminBatchId = terminData.getBatchId();
            Long terminProcessId = terminData.getProcessId();

            if (terminBatchId == null && processId != -1L && !processId.equals(terminProcessId)) {
                // 针对manager发起rollback,terminBatchId可能为null,需要特殊处理下
                exception = new SelectException("unmatched processId, SelectTask batchId = " + batchId
                                                + " processId = " + processId + " and Termin Event: "
                                                + terminData.toString());
                Thread.sleep(1000); // sleep 1秒,等新的数据包
            } else if (terminBatchId != null && batchId != -1L && !batchId.equals(terminBatchId)) {
                exception = new SelectException("unmatched terminId, SelectTask batchId = " + batchId + " processId = "
                                                + processId + " and Termin Event: " + terminData.toString());
                Thread.sleep(1000); // sleep 1秒,等新的数据包
            } else {
                exception = null; // batchId/processId对上了,退出
                break;
            }
        }

        if (exception != null) {
            throw exception;
        }

        if (needCheck) {
            checkContinueWork();
        }

        boolean status = terminData.getType().isNormal();
        if (lastStatus == false && status == true) {
            // 上一批失败,这一批成功,说明调度有问题
            throw new SelectException(String.format("last status is rollback , but now [batchId:%d , processId:%d] is ack",
                batchId,
                terminData.getProcessId()));
        }

        if (terminData.getType().isNormal()) {
            ack(batchId);
            sendDelayStat(pipelineId, terminData.getEndTime(), terminData.getFirstTime());
        } else {
            rollback(batchId);
        }

        arbitrateEventService.terminEvent().ack(terminData); // 先发送对应的数据
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.