Don't save all fields of a model when bumping the update date #7450
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation and context
Currently, there are a lot of places where changing one object requires updating the
updated_date
field on other objects. Usually, the.save
method is used for this purpose, which results in a generic SQLUPDATE
query that replaces the values in all columns.Introduce and use a specialized method that only changes the date. This provides the following advantages:
Prevents the date updates from overwriting updates to other fields that may happen at the same time.
Possibly makes the updates more efficient due to fewer columns being updated (I have no data on this, though).
Makes it easier to recognize the purpose of the query when analyzing logs/live statistics.
Makes the purpose of the code more obvious.
Additionally, update
__save_job_handler
, where we don't want to save just the date, but we still only need to save two fields.How has this been tested?
I verified that when you save the annotations for a job, only the
updated_date
field of the task is modified.Checklist
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
Feel free to contact the maintainers if that's a concern.