protected void traversDetailWithOutCheckpoint() { final List<Phase> phases = batchPhaseList; while (detailSplitter.hasNextRow()) { for (Phase phase : phases) { context.setCurrentPhaseId(phase.getName()); feedJobManager.startPhaseStats(phase, context); phase.execute(); feedJobManager.endPhaseStats(phase, context); } } }
protected void traversDetailWithCheckpoint(FeedCheckpoint checkpoint) { final List<Phase> phases = batchPhaseList; // Determine if a checkpoint has been created and if so, move to it. Boolean movingToCheckpoint = performCheckpoint(detailSplitter, checkpoint); while (detailSplitter.hasNextRow()) { for (Phase phase : phases) { // Bypass phases processing when restart from a checkpoint. if (!movingToCheckpoint) { context.setCurrentPhaseId(phase.getName()); feedJobManager.startPhaseStats(phase, context); phase.execute(); feedJobManager.endPhaseStats(phase, context); } // Checkpoint restart has be reached. if (movingToCheckpoint && checkpoint.getPhaseId().equals(phase.getName())) { movingToCheckpoint = false; } } } }