fix(selfop): avoid loading routing manifests during idle planning
This commit is contained in:
+4
-1
@@ -73,7 +73,10 @@ public class SelfopSchedulePlanner {
|
||||
var last=today.minusDays(local.toLocalTime().isBefore(LocalTime.of(0,5))?2:1);
|
||||
var first=today.minusMonths(2);
|
||||
String digest=hash(config.getWarehouses());
|
||||
var roots=tasks.selectList(new QueryWrapper<SelfopSyncTask>().eq("source_account",config.getSourceAccount())
|
||||
// Idle planning needs only day identity; routing manifests can contain thousands of orders.
|
||||
var roots=tasks.selectList(new QueryWrapper<SelfopSyncTask>()
|
||||
.select("request_key","query_from_utc","query_until_utc","scope_hash","status","query_scope_json")
|
||||
.eq("source_account",config.getSourceAccount())
|
||||
.eq("execution_purpose","BUSINESS").eq("task_role","ACCOUNT_DISCOVERY").eq("task_type","BACKFILL")
|
||||
.eq("discovery_scope_id",account.getId()).isNull("upstream_task_id").isNull("validation_root_task_id")
|
||||
.ge("query_from_utc",first.atStartOfDay().minusHours(8)).le("query_until_utc",last.plusDays(1).atStartOfDay().minusHours(8)));
|
||||
|
||||
+12
-1
@@ -103,7 +103,18 @@ class SelfopSchedulePlannerTest {
|
||||
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<?> query=call.getArgument(0);query.getSqlSegment();
|
||||
return query.getParamNameValuePairs().containsValue("INVENTORY")?List.of(stock):List.of(scope);});
|
||||
var account=new SelfopOutboundDiscoveryScope();account.setId(30L);when(taskService.initializeAccount()).thenReturn(account);
|
||||
var state=new ArrayList<SelfopSyncTask>();when(tasks.selectList(any())).thenAnswer(call->new ArrayList<>(state));
|
||||
var state=new ArrayList<SelfopSyncTask>();when(tasks.selectList(any())).thenAnswer(call->{
|
||||
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<?> query=call.getArgument(0);query.getSqlSegment();
|
||||
if(!query.getParamNameValuePairs().containsValue("BACKFILL"))return new ArrayList<>(state);
|
||||
// Model the actual database projection so deduplication tests cannot rely on unselected fields.
|
||||
assertThat(query.getSqlSelect()).isEqualTo("request_key,query_from_utc,query_until_utc,scope_hash,status,query_scope_json");
|
||||
return state.stream().map(source->{
|
||||
var row=new SelfopSyncTask();row.setRequestKey(source.getRequestKey());
|
||||
row.setQueryFromUtc(source.getQueryFromUtc());row.setQueryUntilUtc(source.getQueryUntilUtc());
|
||||
row.setScopeHash(source.getScopeHash());row.setStatus(source.getStatus());row.setQueryScopeJson(source.getQueryScopeJson());
|
||||
return row;
|
||||
}).toList();
|
||||
});
|
||||
when(tasks.selectCount(any())).thenAnswer(call->{
|
||||
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<?> query=call.getArgument(0);query.getSqlSegment();
|
||||
var values=query.getParamNameValuePairs().values();
|
||||
|
||||
Reference in New Issue
Block a user