-
Notifications
You must be signed in to change notification settings - Fork 7
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
Refactor Plate cache #4694
Refactor Plate cache #4694
Conversation
add plate custom fields to plate cache
return metadata domain ID from Plate
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.
Nicely refactored!
* capability to resolve vocabulary columns by field key or name. | ||
*/ | ||
@Override | ||
protected ColumnInfo resolveColumn(String name) |
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.
I'm curious what you think it would take to allow us to resolve these by another alias like Properties/columnName
or PlateMetadata/columnName
? Is that just a whole bag of worms?
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.
Yeah, this should be straight forward and I'll add it to this PR as well as update the test case to verify resolving by either PropertyURI
or by FieldKey (Properties/columnName)
Rationale
Previously, we were caching plates using
container
as a key. This meant that each time a plate was un-cached, all plates in the container needed to be re-cached. We wanted to move to a finer grained per-plate cache which should improve performance as we anticipate the creation of many plates. One complication that needed to be solved is thatPlates
can be referenced by:This version of the cache uses a cache key that can be generated from each of the various reference units. When a plate is added to the cache we populate the cache with the same plate instance using the other 2 cache key variants to avoid having to re-query for a plate we already know about. The same thing happens in reverse when we un-cache a plate. An internal collection is maintained to help with the un-caching of all plates for a container.
Other Changes
biologics
module.domainId
of the plate metadata domain andgetPlate.api
Query.updateRows
. This now works however metadata fields are only resolved using theirPropertyURI
values.