From f9ea67e27f683fe919b4f7f863a2da09176ebf7f Mon Sep 17 00:00:00 2001 From: mck Date: Thu, 23 Nov 2017 11:12:54 +1100 Subject: [PATCH] if endTime is set, so must startTime be set #281 move the setting of the startTime to when the segment is triggered, as this is definite, rather than the jmx notification recieved afterwards that the segment has started (as we don't always get it). --- .../java/io/cassandrareaper/core/RepairSegment.java | 2 +- .../io/cassandrareaper/service/SegmentRunner.java | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/server/src/main/java/io/cassandrareaper/core/RepairSegment.java b/src/server/src/main/java/io/cassandrareaper/core/RepairSegment.java index 98fcbc307..eb47189d4 100644 --- a/src/server/src/main/java/io/cassandrareaper/core/RepairSegment.java +++ b/src/server/src/main/java/io/cassandrareaper/core/RepairSegment.java @@ -184,7 +184,7 @@ public RepairSegment build(@Nullable UUID segmentId) { Preconditions.checkState( null != startTime || State.NOT_STARTED == state, - "startTime can only be unset if segment is NOT_STARTED"); + "startTime must be set if segment is RUNNING or DONE"); return new RepairSegment(this, segmentId); } diff --git a/src/server/src/main/java/io/cassandrareaper/service/SegmentRunner.java b/src/server/src/main/java/io/cassandrareaper/service/SegmentRunner.java index cd62366b9..aeef108a1 100644 --- a/src/server/src/main/java/io/cassandrareaper/service/SegmentRunner.java +++ b/src/server/src/main/java/io/cassandrareaper/service/SegmentRunner.java @@ -287,9 +287,9 @@ protected Set initialize() { closeJmxConnection(Optional.fromNullable(coordinator)); return true; } - long timeout = repairUnit.getIncrementalRepair() ? timeoutMillis * MAX_TIMEOUT_EXTENSIONS : timeoutMillis; - context.storage.updateRepairSegment(segment.with().coordinatorHost(coordinator.getHost()).build(segmentId)); + context.storage.updateRepairSegment( + segment.with().coordinatorHost(coordinator.getHost()).startTime(DateTime.now()).build(segmentId)); String eventMsg = String.format("Triggered repair of segment %s via host %s", segment.getId(), coordinator.getHost()); @@ -709,10 +709,8 @@ private boolean handleJmxNotificationForCassandra22( case START: try { if (renewLead()) { - DateTime now = DateTime.now(); - context.storage.updateRepairSegment( - currentSegment.with().state(RepairSegment.State.RUNNING).startTime(now).build(segmentId)); + currentSegment.with().state(RepairSegment.State.RUNNING).build(segmentId)); LOG.debug("updated segment {} with state {}", segmentId, RepairSegment.State.RUNNING); break; @@ -780,10 +778,8 @@ private boolean handleJmxNotificationForCassandra21( case STARTED: try { if (renewLead()) { - DateTime now = DateTime.now(); - context.storage.updateRepairSegment( - currentSegment.with().state(RepairSegment.State.RUNNING).startTime(now).build(segmentId)); + currentSegment.with().state(RepairSegment.State.RUNNING).build(segmentId)); LOG.debug("updated segment {} with state {}", segmentId, RepairSegment.State.RUNNING); break;