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
Add debug GRPC interceptors that print conversations in JSON #11085
Conversation
Changelog[uncommitted] (2022-11-08)Features
|
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.
Suggested a couple changes, mostly around moving the control for when the interceptor is active and chained into this repo, and having it not be an unconditional part of the gRPC stack.
84af240
to
77c7894
Compare
@Frassle @AaronFriel I've cleaned this up a bit:
The changes should be to my knowledge fully bw-compat, only affecting things when PULUMI_DEBUG_GRPC is set. |
3c6e71e
to
909672a
Compare
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.
Changes look good!
1e7c1a0
to
f31c5fd
Compare
bors merge |
11085: Add debug GRPC interceptors that print conversations in JSON r=t0yv0 a=t0yv0 <!--- Thanks so much for your contribution! If this is your first time contributing, please ensure that you have read the [CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md) documentation. --> # Description <!--- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. --> Fixes #10232 `PULUMI_DEBUG_GRPC=./debug.json pulumi preview` now works. The debug APIs are probably unstable so I moved them out to their own repo rather than hosting under sdk/. Debug interceptors are no-op unless the process initializes them in main. Currently only `pulumi` process initializes them if the env var is set. This way we observe conversations only once, as a server for ResourceMonitor etc, and as a client for plugin conversations (language and resource). I can now see provider conversations logged which was of interest to me. ## Checklist <!--- Please provide details if the checkbox below is to be left unchecked. --> - [ ] I have added tests that prove my fix is effective or that my feature works <!--- User-facing changes require a CHANGELOG entry. --> - [ ] I have run `make changelog` and committed the `changelog/pending/<file>` documenting my change <!-- If the change(s) in this PR is a modification of an existing call to the Pulumi Service, then the service should honor older versions of the CLI where this change would not exist. You must then bump the API version in /pkg/backend/httpstate/client/api.go, as well as add it to the service. --> - [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version <!-- `@Pulumi` employees: If yes, you must submit corresponding changes in the service repo. --> Co-authored-by: Anton Tayanovskyy <anton.tayanovskyy@gmail.com> Co-authored-by: Anton Tayanovskyy <anton@pulumi.com>
Build failed: |
f31c5fd
to
9276574
Compare
bors merge |
Build succeeded: |
11085: Add debug GRPC interceptors that print conversations in JSON r=t0yv0 a=t0yv0 <!--- Thanks so much for your contribution! If this is your first time contributing, please ensure that you have read the [CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md) documentation. --> # Description <!--- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. --> Fixes pulumi/pulumi#10232 `PULUMI_DEBUG_GRPC=./debug.json pulumi preview` now works. The debug APIs are probably unstable so I moved them out to their own repo rather than hosting under sdk/. Debug interceptors are no-op unless the process initializes them in main. Currently only `pulumi` process initializes them if the env var is set. This way we observe conversations only once, as a server for ResourceMonitor etc, and as a client for plugin conversations (language and resource). I can now see provider conversations logged which was of interest to me. ## Checklist <!--- Please provide details if the checkbox below is to be left unchecked. --> - [ ] I have added tests that prove my fix is effective or that my feature works <!--- User-facing changes require a CHANGELOG entry. --> - [ ] I have run `make changelog` and committed the `changelog/pending/<file>` documenting my change <!-- If the change(s) in this PR is a modification of an existing call to the Pulumi Service, then the service should honor older versions of the CLI where this change would not exist. You must then bump the API version in /pkg/backend/httpstate/client/api.go, as well as add it to the service. --> - [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version <!-- `@Pulumi` employees: If yes, you must submit corresponding changes in the service repo. --> Co-authored-by: Anton Tayanovskyy <anton.tayanovskyy@gmail.com>
Description
Fixes #10232
PULUMI_DEBUG_GRPC=./debug.json pulumi preview
now works.The debug APIs are probably unstable so I moved them out to their own repo rather than hosting under sdk/.
Debug interceptors are no-op unless the process initializes them in main. Currently only
pulumi
process initializes them if the env var is set. This way we observe conversations only once, as a server for ResourceMonitor etc, and as a client for plugin conversations (language and resource).I can now see provider conversations logged which was of interest to me.
Checklist
make changelog
and committed thechangelog/pending/<file>
documenting my change