(0.44) Enable per-connection JITServer AOT cache disabling #19166
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.
If a JITServer client uses
-XX:+JITServerAOTCacheIgnoreLocalSCC
, servers that client connects to will nowFail a compilation completely if the client requests an AOT cache store and the server cannot set up the compilation as an AOT cache store or load, and
Report the state of the server's AOT cache if (1) occurs, so the client will not continue to send AOT cache requests to that server if those requests could not possibly be fulfilled.
The client tracks the state of the current server's AOT cache with the persistent info properties
doNotRequestJITServerAOTCacheStore()
anddoNotRequestJITServerAOTCacheLoad()
. Since a particular server's cache will never become able to complete AOT cache loads or stores partway through a connection (e.g., the server's cache never shrinks in size, so AOT cache stores will never succeed once it is full) these properties remain true once set for the duration of the connection with a particular server. They are reset whenever a client connects to a new server.These changes are necessary to prevent a crash at the client from occurring if the client is running with
-XX:+JITServerUseAOTCache -XX:+JITServerAOTCacheIgnoreLocalSCC
and connects to a server that is not running-XX:+JITServerUseAOTCache
(or, more generally, has an AOT cache in which methods or records cannot be stored).This PR also fixes a bug that prevented the deserializer from being reset when a client connected to a new server after a previous disconnection.
Related: #18990