未验证 提交 9942d73d 编写于 作者: K Kirs 提交者: GitHub

[Fix-6478] [Server] Fix the lack of scheduling time in complement parallelism mode (#6491) (#6498)

* Fix the lack of scheduling time in complement parallelism mode
上级 cbc457b1
...@@ -604,15 +604,15 @@ public class ExecutorServiceImpl extends BaseServiceImpl implements ExecutorServ ...@@ -604,15 +604,15 @@ public class ExecutorServiceImpl extends BaseServiceImpl implements ExecutorServ
createCount = Math.min(listDate.size(), expectedParallelismNumber); createCount = Math.min(listDate.size(), expectedParallelismNumber);
} }
logger.info("In parallel mode, current expectedParallelismNumber:{}", createCount); logger.info("In parallel mode, current expectedParallelismNumber:{}", createCount);
listDate.addLast(end);
int chunkSize = listDate.size() / createCount; int chunkSize = listDate.size() / createCount;
for (int i = 0; i < createCount; i++) { for (int i = 0; i < createCount; i++) {
int rangeStart = i == 0 ? i : (i * chunkSize); int rangeStart = i == 0 ? i : (i * chunkSize);
int rangeEnd = i == createCount - 1 ? listDate.size() - 1 int rangeEnd = i == createCount - 1 ? listDate.size() - 1
: rangeStart + chunkSize; : rangeStart + chunkSize;
if (rangeEnd == listDate.size()) {
rangeEnd = listDate.size() - 1;
}
cmdParam.put(CMDPARAM_COMPLEMENT_DATA_START_DATE, DateUtils.dateToString(listDate.get(rangeStart))); cmdParam.put(CMDPARAM_COMPLEMENT_DATA_START_DATE, DateUtils.dateToString(listDate.get(rangeStart)));
cmdParam.put(CMDPARAM_COMPLEMENT_DATA_END_DATE, DateUtils.dateToString(listDate.get(rangeEnd))); cmdParam.put(CMDPARAM_COMPLEMENT_DATA_END_DATE, DateUtils.dateToString(listDate.get(rangeEnd)));
command.setCommandParam(JSONUtils.toJsonString(cmdParam)); command.setCommandParam(JSONUtils.toJsonString(cmdParam));
......
...@@ -58,12 +58,15 @@ import org.mockito.InjectMocks; ...@@ -58,12 +58,15 @@ import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* executor service 2 test * executor service 2 test
*/ */
@RunWith(MockitoJUnitRunner.Silent.class) @RunWith(MockitoJUnitRunner.Silent.class)
public class ExecutorServiceTest { public class ExecutorServiceTest {
private static final Logger logger = LoggerFactory.getLogger(ExecutorServiceTest.class);
@InjectMocks @InjectMocks
private ExecutorServiceImpl executorService; private ExecutorServiceImpl executorService;
...@@ -326,4 +329,32 @@ public class ExecutorServiceTest { ...@@ -326,4 +329,32 @@ public class ExecutorServiceTest {
result.put(Constants.STATUS, Status.SUCCESS); result.put(Constants.STATUS, Status.SUCCESS);
return result; return result;
} }
@Test
public void testCreateComplementToParallel() {
List<String> result = new ArrayList<>();
int expectedParallelismNumber = 3;
LinkedList<Integer> listDate = new LinkedList<>();
listDate.add(0);
listDate.add(1);
listDate.add(2);
listDate.add(3);
int createCount = Math.min(listDate.size(), expectedParallelismNumber);
logger.info("In parallel mode, current expectedParallelismNumber:{}", createCount);
listDate.addLast(4);
int chunkSize = listDate.size() / createCount;
for (int i = 0; i < createCount; i++) {
int rangeStart = i == 0 ? i : (i * chunkSize);
int rangeEnd = i == createCount - 1 ? listDate.size() - 1 : rangeStart + chunkSize;
logger.info("rangeStart:{}, rangeEnd:{}",rangeStart, rangeEnd);
result.add(listDate.get(rangeStart) + "," + listDate.get(rangeEnd));
}
Assert.assertEquals("0,1", result.get(0));
Assert.assertEquals("1,2", result.get(1));
Assert.assertEquals("2,4", result.get(2));
}
} }
...@@ -190,6 +190,7 @@ public class CronUtils { ...@@ -190,6 +190,7 @@ public class CronUtils {
return result; return result;
} }
// support left closed and right open time interval (startDate <= N < endDate)
Date from = new Date(startTime.getTime() - Constants.SECOND_TIME_MILLIS); Date from = new Date(startTime.getTime() - Constants.SECOND_TIME_MILLIS);
Date to = new Date(endTime.getTime() - Constants.SECOND_TIME_MILLIS); Date to = new Date(endTime.getTime() - Constants.SECOND_TIME_MILLIS);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册