Examples of TerminEventData


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

        int size = terminMonitor.size();
        try {
            for (int i = 0; i < size; i++) {
                Long processId;
                processId = terminMonitor.waitForProcess();
                TerminEventData data = new TerminEventData();
                data.setPipelineId(pipelineId);
                data.setProcessId(processId);
                ack(data);
            }
        } catch (InterruptedException e) {
            throw new ArbitrateException(e);
        }
View Full Code Here

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

        } catch (InterruptedException e) {
            want.fail();
        }

        // 发送结束事件
        TerminEventData termin = new TerminEventData();
        termin.setPipelineId(pipelineId);
        termin.setType(TerminType.SHUTDOWN);
        arbitrateEventService.terminEvent().single(termin);
        sleep(5 * 1000L);// 等待处理完所有的termin事件

        // 关闭
        select.destory(pipelineId);
View Full Code Here

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

        zookeeper.create(path, datas, CreateMode.PERSISTENT);
    }

    // 模拟创建一个终结节点
    protected 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

        } catch (IOException e) {
            e.printStackTrace();
        }

        // 发送结束事件
        TerminEventData termin = new TerminEventData();
        termin.setPipelineId(pipelineId);
        termin.setType(TerminType.SHUTDOWN);
        arbitrateEventService.terminEvent().single(termin);
        sleep(5 * 1000L);// 等待处理完所有的termin事件

        // 关闭
        select.destory(pipelineId);
View Full Code Here

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节点

            EtlEventData ldata2 = loadEvent.await(pipelineId);
            want.bool(ldata1.getProcessId() < ldata2.getProcessId()).is(true);
            loadEvent.single(ldata2);

            Long p2 = ldata2.getProcessId();
            TerminEventData terminData2 = new TerminEventData();
            terminData2.setPipelineId(pipelineId);
            terminData2.setProcessId(p2);
            terminEvent.ack(terminData2);// 发送ack信号,删除termin节点

            sleep(2000L);
            ArbitrateFactory.destory(pipelineId);
        } catch (InterruptedException e) {
View Full Code Here

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节点

            EtlEventData ldata2 = loadEvent.await(pipelineId);
            want.bool(ldata1.getProcessId() < ldata2.getProcessId()).is(true);
            loadEvent.single(ldata2);

            Long p2 = ldata2.getProcessId();
            TerminEventData terminData2 = new TerminEventData();
            terminData2.setPipelineId(pipelineId);
            terminData2.setProcessId(p2);
            terminEvent.ack(terminData2);// 发送ack信号,删除termin节点

            sleep(2000L);
            ArbitrateFactory.destory(pipelineId);
        } catch (InterruptedException e) {
View Full Code Here

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节点

            EtlEventData ldata2 = loadEvent.await(pipelineId);
            want.bool(ldata1.getProcessId() < ldata2.getProcessId()).is(true);
            loadEvent.single(ldata2);

            Long p2 = ldata2.getProcessId();
            TerminEventData terminData2 = new TerminEventData();
            terminData2.setPipelineId(pipelineId);
            terminData2.setProcessId(p2);
            terminEvent.ack(terminData2);// 发送ack信号,删除termin节点

            sleep(2000L);
            ArbitrateFactory.destory(pipelineId);
        } catch (InterruptedException e) {
View Full Code Here

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

        } catch (IOException e) {
            e.printStackTrace();
        }

        // 发送结束事件
        TerminEventData termin = new TerminEventData();
        termin.setPipelineId(pipelineId);
        termin.setType(TerminType.SHUTDOWN);
        arbitrateEventService.terminEvent().single(termin);
        sleep(5 * 1000L);// 等待处理完所有的termin事件

        // 关闭
        select.destory(pipelineId);
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.