Hello all, Following up from today's community sync where we were discussing 1.0 blockers, I just wanted to finalize discussion on https://github.com/apache/polaris/issues/761 to check if everyone's aligned on the current state of things.
My understanding is that the originally reported issues regarding concurrency problems for the EntityCache as a standalone class and its internal lack of enforcement of cohesion between the "byId" and "byName" lookups is not actually a concurrency issue for the overall system because the design of EntityCache today is simply tightly coupled to Resolver.java. In particular, the main way to reason about where the Resolver gets its own internal guarantees about monotonicity of increasing versions it sees is in the "bulkValidate" method ( https://github.com/apache/polaris/blob/3603fa317ad8313f178c09137965bc0e5c7f256d/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/Resolver.java#L545) where the "loadEntitiesChangeTracking" comes directly from the underlying persistence store to supply the "minVersions" subsequently requested from the EntityCache. I think we also agreed that using an IndexedCache to provide cohesion between byId and byName would be nice-to-have but in this situation not a strict requirement for correctness, and if we do encounter any challenges modifying the EntityCache to use an IndexedCache, we should probably take our time on it instead of rushing it. We discussed that a followup might be to change make EntityCache package-private in a separate package with Resolver to better make it clear that the EntityCache isn't intended to be used independently. For now though, are there any remaining concerns about removing the "1.0-blocker" label from https://github.com/apache/polaris/issues/761 ? Cheers, Dennis