-
Notifications
You must be signed in to change notification settings - Fork 0
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
[Proposal]_Pinning_File_Suport #19
Comments
im gonna throw this this link here: |
We do it in JSON |
Usd utils have a function to get all files across the stage |
This topic should provide you some ways to do it: |
$Site_Root_Overwrite can be an environment variable and Root replace can use it |
Linking this GH issue for further reference. This issue covers the changes in behaviour for the We need to decide if it is safe to use the function or if we should build our own setup to extract the paths for the PinningFile |
this has been finished with the Feature/23 feature request pin file loading merge |
Summary
Glossary of Terms
Pinning
Ayon::Uri
Rootless Path
resolveRoots
isFalse
resolved
cache Entity
path
freezing resolution data in time
latest
orhero
will not resolve to the newest version but to a specific version we store at a point in time.Render farm/job
update assets
outside of the production network
Conceptual Framework
Conceptually, the Proposal boils down to the following:
Description
The abstract target for this feature is as follows:
We need to provide the Ayon_Usd_AssetResolver with data about what Ayon::Uri should be resolved into what path.
This is important for 2 Reasons
Approval
Human:
External Implementations:
To Reproduce (if issue/bug/etc)
No response
User Stories
Impact
High
Assumed Complexity
Days, Months
Impact Scale
an entire tool group
Other tools that get touched
All Dccs that have Ayon_Usd suport will be affected by this.
How it Solves the Problem
Allowing to load a file at startup will allow us to use the resolver without having to access the server;
Implementation Idea/Details
Resolver Caching and CppApi
Every Resolver will automatically connect to the Global runtime cache instance.
We will check at startup of the Global Runtime cache to see if a pinning file is present via an environment variable, and if this is the case, we will not initialize the cpp API. (we should have an extra env variable to disable this behaviour without having to delete the pinning file)
Then, we will load the file. And generate the local path
And write it into the cache
Statick
, which will then always block re_evaluation.This approach has the disadvantage that we assume that we will have all the needed paths and don't want to talk to the server, and while this is the point of this proposal, we should consider if there are edge cases that break this assumption
Technical Approach
Storing the cache in a file
writing out the file will require the following steps.
as a USD
as JSON
Loading the File
as Usd
as JSON
We need to specify a standard in both cases, probably in a class. (we could write a class that takes all the info and has the write read operations as member functions so it can enforce the data layout on disk)
Architecture
No response
Unresolved Questions
Does writing out the Runtime Cache include all Ayon::Uris needed to render the scene?
if we decide to remove unused cache entries after a while. How does this affect Writing out?
Should the Resolver write out all the Ayon::Uris, or could we have a separate system for this?
milestones
Potential Problems
Long-term Issues
No response
Transient Problems
impacting Branches
Dependencies
No response
outgoing Dependencies
No response
dependency Issues
#18
ynput/ayon-usd#17
Dependant Branches
No response
Common Dependencies
No response
non-persistent test (e.g. development time tests)
Testing Plan (president tests)
Documentation
Maintenance
I assume the feature will require little maintenance after implementation, but new USD features or requirements, changes, and requests for different usage methods could lead to manual rework.
Risk Management
the usage of the tool should only be advised after extensive testing, and it should stay out of production until extensive testing.
Furthermore, disabling the feature would still allow using the resolver, but if we want to propose it for a render farm, this feature rollback would not be an option.
Appendices
No response
Is there an existing issue with this?
Are there any labels you wish to add?
The text was updated successfully, but these errors were encountered: