HDFS-16623. Avoid IllegalArgumentException in LifelineSender (#4409)
* HDFS-16623. Avoid IllegalArgumentException in LifelineSender Co-authored-by: zengqiang.xu <zengqiang.xu@shopee.com> (cherry picked from commitaf5003a473
) (cherry picked from commitee3ee98ee5
)
This commit is contained in:
parent
557ab95dc2
commit
aba4418981
|
@ -1241,7 +1241,8 @@ class BPServiceActor implements Runnable {
|
|||
}
|
||||
|
||||
long getLifelineWaitTime() {
|
||||
return nextLifelineTime - monotonicNow();
|
||||
long waitTime = nextLifelineTime - monotonicNow();
|
||||
return waitTime > 0 ? waitTime : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
package org.apache.hadoop.hdfs.server.datanode;
|
||||
|
||||
import org.apache.hadoop.util.Time;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.apache.hadoop.hdfs.server.datanode.BPServiceActor.Scheduler;
|
||||
|
@ -182,6 +183,18 @@ public class TestBpServiceActorScheduler {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScheduleLifelineScheduleTime() {
|
||||
Scheduler mockScheduler = spy(new Scheduler(
|
||||
HEARTBEAT_INTERVAL_MS, LIFELINE_INTERVAL_MS,
|
||||
BLOCK_REPORT_INTERVAL_MS, OUTLIER_REPORT_INTERVAL_MS));
|
||||
long now = Time.monotonicNow();
|
||||
mockScheduler.scheduleNextLifeline(now);
|
||||
long mockMonotonicNow = now + LIFELINE_INTERVAL_MS * 2;
|
||||
doReturn(mockMonotonicNow).when(mockScheduler).monotonicNow();
|
||||
assertTrue(mockScheduler.getLifelineWaitTime() >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOutlierReportScheduling() {
|
||||
for (final long now : getTimestamps()) {
|
||||
|
|
Loading…
Reference in New Issue