fix: schemaVersion called with old context #293
Merged
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.
Fix for #294
If you override
schemaVersion(context)
,context
is not the current request's context. This is because theschemaVersion()
called inCompilerApi
is a closure. By adding theschemaVersion
to the key for thecompilerCache
,CompilerApi
will effectively recompile with new schemaVersions.Note: If the server has not specified a
maxCompilerCacheKeepAlive
, the old compilers will remain in memory untilcompilerCacheSize
is reached. At that point, the LRU cache will start evicting the old schemas.Note for
OrchestratorApi
: Current workaround for incorrect context in schemaVersion is to tack the schemaVersion into yourcontextToAppId
. This introduces manyOrchestratorApi
s when there should be far fewer. Passing the correctcontext
toschemaVersion(context)
resolves this issue.Note for
CompilerApi
: This was left untouched to allow customizations directly callingcreateCompilerApi
to still behave the same without a call toschemaVersion(context)
, and becauseoptions.devServer
is handled there. It's starting to feel messy, so probably schemaVersion needs to be restructured overall.