发现一个问题 #207
Replies: 2 comments 1 reply
-
|
@1314fundamentals Which openTCS version are you using? Can you describe a minimal scenario with which the problem you observe can be reproduced? |
Beta Was this translation helpful? Give feedback.
-
|
The version I am using is 6.4. Reproduced case: You can make AGV1 run the Park task again when there is a request blockage, and then the request is placed in the deferred allocations queue. At the same time, you can make other vehicles release resources and call scheduleRetryWaitingArrangements, and then immediately issue a new task to AGV1. Let AGV1 accept different routes, and then it can be replicated. The logic I have in mind is that previously, AGV1 was blocked and placed in deferred allocations for retry requests. However, when AGV1 accepted a new task, it was not cleared, but the new task had already updated AGV1's claims. This would result in old requests in deferred allocations reporting the error "Not allocating resources that are not next claimed resources:" when running, because this is still what was stated in the claim declaration before the application. It's a bit difficult to reproduce this, I have run 50 cars in the system. Then this problem arose. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello, OpenTcs workers. I have discovered a problem. When an AGV is executing a task (TaskA) that can be canceled midway (the dispensable attribute of the corresponding TransportOrder is true), and after the task is canceled and a new order task (TaskB) is accepted, normally, the system will cancel all the resource requests (AllocatorTasks) that were previously made while executing TaskA. However, I have noticed that when there are a large number of requests and the resources requested for executing TaskA encounter delays, some of the retry requests are not placed in allocateFutures. This leads to the processing of TaskA tasks when executing TaskB.
The method for the problem to occur is
Class :org/opentcs/strategies/basic/scheduling/AllocatorTask.java
private void scheduleRetryWaitingAllocations() {
for (AllocatorCommand.Allocate allocate : deferredAllocations) {
kernelExecutor.submit(
new AllocatorTask(
reservationPool,
deferredAllocations,
allocationAdvisor,
kernelExecutor,
globalSyncObject,
allocate
)
);
}
deferredAllocations.clear();
}
Could you please take some time out of your busy schedule to help me? Thank you!
Beta Was this translation helpful? Give feedback.
All reactions