-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Procedural Scheduling activity deletion #1610
base: develop
Are you sure you want to change the base?
Conversation
8265777
to
908f4b9
Compare
908f4b9
to
5a03889
Compare
5a03889
to
62049ea
Compare
c9abefa
to
c2e20c2
Compare
c2e20c2
to
327fdec
Compare
Notes from walkthrough:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly minor comments, as we already discussed in the walkthrough the things that need to be tweaked with this PR (most blocking for me is restricting modifying activity directives)
procedural/scheduling/src/main/kotlin/gov/nasa/ammos/aerie/procedural/scheduling/plan/Edit.kt
Show resolved
Hide resolved
...c/test/kotlin/gov/nasa/ammos/aerie/procedural/constraints/NotImplementedSimulationResults.kt
Outdated
Show resolved
Hide resolved
...ts/src/test/java/gov/nasa/jpl/aerie/e2e/procedural/scheduling/ProceduralSchedulingSetup.java
Show resolved
Hide resolved
...g/src/main/kotlin/gov/nasa/ammos/aerie/procedural/scheduling/utils/EasyEditablePlanDriver.kt
Outdated
Show resolved
Hide resolved
.../main/java/gov/nasa/jpl/aerie/e2e/procedural/scheduling/procedures/ActivityDeletionGoal.java
Show resolved
Hide resolved
327fdec
to
ea5a811
Compare
I was accidentally pushing to the wrong branch for the last two hours 🤦 @Mythicaeda all changes should be done now. |
1e50c77
to
0917a9a
Compare
0917a9a
to
21bacc5
Compare
...src/main/java/gov/nasa/jpl/aerie/scheduler/server/services/GraphQLMerlinDatabaseService.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
...src/main/java/gov/nasa/jpl/aerie/scheduler/server/services/GraphQLMerlinDatabaseService.java
Outdated
Show resolved
Hide resolved
...main/java/gov/nasa/jpl/aerie/e2e/procedural/scheduling/procedures/DeleteBiteBananasGoal.java
Show resolved
Hide resolved
Quality Gate passedIssues Measures |
Description
This PR does two main things:
EasyEditablePlanDriver
. This way all the adapter has to do is translate the plan representations.Unpredictability of re-anchoring
The timeline/scheduling procedural libraries try to keep track of an estimated start time for anchored activities, but it is not guaranteed to be right. In practice, I expect the estimates will usually be wrong due to the interop between eDSL and procedural; and even if an estimate is right, it can become wrong in the future. This can definitely be improved, but its a separate task and it will probably never be perfect.
This is usually fine because its an "unofficial" estimate. But if we have the activity chain
A <- B <- C
, and we deleteB
and try to reanchorC
to the plan, we need to turn the start estimate into an official start time. This way too fallible and unpredictable to do automatically on a large batch of activities.On the other hand, we could reanchor
A <- C
in a predictable and reliable way. Its still not necessarily accurate, because if the original state wasA <- B (end)<- C
thenC
will be shifted forward by the duration ofB
, becauseB
is assumed to be instantaneous. So its not perfect, but its at least reproducible and predictable.Verification
I've added unit tests for the changes to
InMemoryEditablePlan
, and e2e tests to make sure the changes are reflected in the database.Documentation
I've added doc comments, and I'll open a PR for the docs website soon.
Future work
It turns out that implementing activity modification is so easy that I went ahead and did it in this PR, hidden in the backend. You'll notice in
GraphQLMerlinDatabaseService
that it not has routines for uploading creations, deletions, and modifications. The modifications part is used to update anchored activities during a deletion. I think extending support for this to the user will be almost trivial, but does deserve a separate PR.