Skip to content
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

A job cannot be opened if to remove an image with the latest keyframe of a track #8952

Merged
merged 12 commits into from
Jan 20, 2025

Conversation

bsekachev
Copy link
Member

@bsekachev bsekachev commented Jan 16, 2025

Motivation and context

Depends on #8951

From the design perspective, we do not use deleted images to calculate positions (the idea is to treat the job as if these images do not exist). However, this can lead to situations where track keyframes are missing, making it impossible to open the job. With this patch, such errors will be properly handled, and these objects will not be displayed at all.

How has this been tested?

Checklist

  • I submit my changes into the develop branch
  • I have created a changelog fragment
  • I have updated the documentation accordingly
  • I have added tests to cover my changes
  • I have linked related issues (see GitHub docs)
  • I have increased versions of npm packages if it is necessary
    (cvat-canvas,
    cvat-core,
    cvat-data and
    cvat-ui)

License

  • I submit my code changes under the same MIT License that covers the project.
    Feel free to contact the maintainers if that's a concern.

@bsekachev bsekachev requested a review from nmanovic as a code owner January 16, 2025 16:50
@bsekachev bsekachev changed the base branch from develop to bs/fixed_deleted_frames January 16, 2025 17:12
@codecov-commenter
Copy link

Codecov Report

Attention: Patch coverage is 55.55556% with 4 lines in your changes missing coverage. Please review.

Please upload report for BASE (bs/fixed_deleted_frames@73a98d2). Learn more about missing BASE report.

Additional details and impacted files
@@                    Coverage Diff                     @@
##             bs/fixed_deleted_frames    #8952   +/-   ##
==========================================================
  Coverage                           ?   73.84%           
==========================================================
  Files                              ?      417           
  Lines                              ?    44593           
  Branches                           ?     4031           
==========================================================
  Hits                               ?    32928           
  Misses                             ?    11665           
  Partials                           ?        0           
Components Coverage Δ
cvat-ui 78.28% <0.00%> (?)
cvat-server 70.06% <0.00%> (?)

@bsekachev bsekachev merged commit 2b69629 into bs/fixed_deleted_frames Jan 20, 2025
29 of 31 checks passed
@bsekachev bsekachev deleted the bs/fixed_tracks_1 branch January 21, 2025 07:33
@cvat-bot cvat-bot bot mentioned this pull request Jan 27, 2025
archibald1418 pushed a commit that referenced this pull request Jan 30, 2025
archibald1418 added a commit that referenced this pull request Feb 5, 2025
Regression test for 2 bugs that were fixed in #8951 and #8952 
The fix dealt with incorrect frame interpolation when deleting keyframes
Also, opening the task afterwards could crash with application error

### How has this been tested?

This consists of two test cases reflecting two different bugs +
`before()` and `beforeEach()` hooks which unifies conditions before both
cases.

#### Preparation
##### Before all tests:
- Login
- Create a zip archive with a dataset consisting of 5 frames
- Create task from archive using UI 
(NB: `headless..` commands only work with `mounted_file_share` which
being regularly cleared in Helm CI)
- Open task job and save `jobID` into a variable
- Send headless request to cvat-core's `JobsApI` to create a rectangle
track with 3 keyframes: 0, 2 and 4. After this, the rectangle moves
clockwise along the image's perimeter (topLeft -> topCenter -> topRight
-> centerRight -> bottomRight)

#### Before each test
- Restore all frames using headless `PATCH` request to send
`deleted_frames: []` to `/data/meta`. This recovers frame deletions that
were done under test. Wait for response
- Reload the page to hydrate annotations that were added previously.
Wait for `GET` to `/data/meta` which will load the created rectangle
track onto the `#cvat_canvas_background`.
- Save the job
- Go to first frame to start the test

### Case 1
This checks that the job can be opened without any crashes or error
notification messages after deleting keyframes and saving the job.
Interpolation is terminated and the tracked rectangle should not exist
in the DOM

- Flick through all frames and click 'Delete' on frames 0, 2, 4
(keyframes)
- Save, reload the job. Error should not appear.
- Object should not exist. Error notifications should not exist

### Case 2
- Go to frame 2
- Delete frame 2. Confirm that frame 3 is open and that previous frame
is frame 1
- Remember shape positions on frames 1 and 3 (=interpolated positions)
- Save the job, reload the job
- Validate that the shapes are on the same positions as before the
reload

### Checklist
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.

---------

Co-authored-by: Oleg Valiulin <oleg.valiulin@cvat.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants