Open foundrytom opened 9 months ago
Ask people for input - broad assumption is that the distributed serialized on disk cache is a read-only cache to prevent the explosion that is networked concurrent writes to the same cache.
Consider all possible cache implementations (eg Redis, memcached) when deciding what goes into the cache interface.
The manager is general in charge of which cache is used as it knows about the pipeline (or exposes that configuration)
Consider making this in the same ilk as the GRPC prototype, so its just another wrapper ManagerInterface + factory so the core API doesn't know about it.
We could consider this an "TraitsDataCache", where the key is just entityRef + context, and if the traitsdata contains the traits in question, it's a hit, otherwise a miss.
We may need tests for distributed generation in the publishing workflow for this, since the context would be distributed and intermediate write access resolves will interact with the cache.
It's painful, but categorising this as non essential as we could release without it, and it's a big thing. This dosen't mean it's not still on the 1.0.0 roadmap.
Capturing discussion:
CacheInterfacePtr
(cache
?) toManagerStateBase
that is set by the interface implementation increateState
and/orcreateChildState
(a member var over a method to avoid a Manager.cpp method going into python when there is no C++ manager interface implementation)persistenceTokenForState
, so the cache could be re-populated and set back instateFromPersistenceToken
.Manager.cpp
, will attempt to lookup an API call in the cache if there is one in the contextManagerInterface
method? eg USD's varies with context mechanism.