-
Notifications
You must be signed in to change notification settings - Fork 176
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
Remove session caching and state #3381
Conversation
Wei, Will it also address #3358 ? |
@rajeshkamal5050 Yes, indeed. Closed that as duplicate of what is mentioned in #3297 "RefreshEnvironmentAsync returns deployment status for a different environment than the one requested" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One small comment about hard coding the playground subscription ID in the end to end test.
Excited to see this land and see how much worse performance becomes. I think with the change in our APIs to give VS ways to control how much data is fetched we won't have a problem here - thanks for moving us back to a known good state and challenging the use of caching when we weren't sure we needed it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Azure Dev CLI Install InstructionsInstall scriptsMacOS/Linux
bash:
pwsh:
WindowsPowerShell install
MSI install
Standalone Binary
MSIContainer
Documentationlearn.microsoft.com documentationtitle: Azure Developer CLI reference
|
Add usage telemetry for `vsrpc` server invocations. To enable collection of telemetry, the server starts a goroutine that periodically ingests any newly emitted telemetry. On shutdown, any in-memory telemetry events is flushed to disk. To collect usage telemetry, each server invocation emits a span for the duration of processing. The span contains RPC-specific attributes (ID -- for correlation, response error code, and method). The span also contains any usage attributes that were set throughout the server process lifetime (see `tracing.SetUsageAttribute` which is safe for multithreading). This works nicely with the slight imperfection that specific irrelevant attributes may persist across requests if not updated. We may readjust in the future, but largely attributes do end up being updated since the server currently acts more like an imperfect CLI wrapper after #3381.
Removes
container
andmanifest
caching from the session. With this change, each RPC request creates a container copy with only registrations and recreates components fully to handle the particular request. This sidesteps concurrency issues with component designs that may not be handled fully.This effectively means all components are "request scoped" and would perform the same app initialization logic as-if the "azd cli" process had started from brand new. This allows for concurrency and avoids blocking, at the cost of memory + I/O redundancy. This is an expedient change to increase reliability and avoid any caching issues. In the future, as we start refactoring the app to separate out different systems that are initialized differently, we can reshare components + implement different I/O polling strategies for the complete e2e to work more efficiently.
Addresses #3287 , #3297, #3362