Skip to content
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

xRegisterStackTransform causes an error if there is no stack outputs in Typescript #15973

Closed
Tracked by #12996
zbuchheit opened this issue Apr 17, 2024 · 2 comments · Fixed by #16005
Closed
Tracked by #12996

xRegisterStackTransform causes an error if there is no stack outputs in Typescript #15973

zbuchheit opened this issue Apr 17, 2024 · 2 comments · Fixed by #16005
Assignees
Labels
area/transforms Old style SDK based or engine based transforms customer/feedback Feedback from customers customer/lighthouse Lighthouse customer bugs kind/bug Some behavior is incorrect or out of spec language/javascript resolution/fixed This issue was fixed
Milestone

Comments

@zbuchheit
Copy link
Contributor

zbuchheit commented Apr 17, 2024

What happened?

While attempting to use xRegisterStackTransform I encountered the following error when I don't have a stack output set.

Diagnostics:
  pulumi:pulumi:Stack (awsx-ts-dev):
    error: failed to register stack transform: Error: 1 CANCELLED: Call cancelled
    error: Error: Channel has been shut down
        at InternalChannel.createCall (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/internal-channel.ts:835:13)
        at ChannelImplementation.createCall (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/channel.ts:166:33)
        at getCall (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/client-interceptors.ts:349:24)
        at getBottomInterceptingCall (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/client-interceptors.ts:480:16)
        at /Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/client-interceptors.ts:574:7
        at getInterceptingCall (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/client-interceptors.ts:576:10)
        at ServiceClientImpl.makeUnaryRequest (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/client.ts:312:64)
        at ServiceClientImpl.registerResource (/Users/zbuchheit/work/tmp/awsx-ts/node_modules/@grpc/grpc-js/src/make-client.ts:189:15)
        at /Users/zbuchheit/work/tmp/awsx-ts/node_modules/@pulumi/runtime/resource.ts:545:41
        at new Promise (<anonymous>)

Example

Repro Code

import * as pulumi from "@pulumi/pulumi";
import * as awsx from "@pulumi/awsx";

pulumi.runtime.xRegisterStackTransform(args => {
    if (args.type === "awsx:ec2:Vpc") {
    console.log(args.name, args.type, args.props)
    }
    return undefined;
})

const vpc = new awsx.ec2.Vpc("vpc", {
    natGateways: {
        strategy: "None"
    },
});

// export const subnet = vpc.vpc.urn; //Uncomment to fix the issue

Repro Steps

  1. Run pulumi up

Output of pulumi about

CLI          
Version      3.113.0
Go Version   go1.22.2
Go Compiler  gc

Plugins
NAME    VERSION
aws     6.31.0
awsx    2.7.0
docker  4.5.3
docker  3.6.1
nodejs  unknown

Host     
OS       darwin
Version  14.2.1
Arch     arm64

This project is written in nodejs: executable='/Users/zbuchheit/.nvm/versions/node/v18.17.1/bin/node' version='v18.17.1'

Current Stack: zbuchheit-pulumi-corp/awsx-ts/dev

Found no resources associated with dev

Found no pending operations associated with dev

Backend        
Name           pulumi.com
URL            https://app.pulumi.com/zbuchheit-pulumi-corp
User           zbuchheit-pulumi-corp
Organizations  zbuchheit-pulumi-corp
Token type     personal

Dependencies:
NAME            VERSION
@pulumi/pulumi  3.113.0
@types/node     18.19.31
typescript      5.4.5
@pulumi/aws     6.31.0
@pulumi/awsx    2.7.0

Pulumi locates its logs in /var/folders/lh/l71cdh810xb33t0jc7qmt5_80000gn/T/ by default

Additional context

This appears specific to Typescript as Python doesn't produce the same error with equivalent code.

"""An AWS Python Pulumi program"""

import pulumi
from pulumi_aws import s3
import pulumi_awsx as awsx

def my_transformation(args):
    if args.type_ == "awsx:ec2:Vpc":
        print(args.name, args.type_, args.props)
    return args

pulumi.runtime.x_register_stack_transform(my_transformation)

vpc = awsx.ec2.Vpc("vpc", nat_gateways=awsx.ec2.NatGatewayConfigurationArgs(strategy=awsx.ec2.NatGatewayStrategy.NONE))

Contributing

Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

@zbuchheit zbuchheit added kind/bug Some behavior is incorrect or out of spec needs-triage Needs attention from the triage team customer/feedback Feedback from customers customer/lighthouse Lighthouse customer bugs labels Apr 17, 2024
@zbuchheit zbuchheit changed the title xRegisterStackTransform causes an error if there is no stack outputs xRegisterStackTransform causes an error if there is no stack outputs in Typescript Apr 17, 2024
@justinvp justinvp removed the needs-triage Needs attention from the triage team label Apr 19, 2024
@justinvp justinvp added this to the 0.103 milestone Apr 19, 2024
@Frassle Frassle added area/transforms Old style SDK based or engine based transforms language/javascript labels Apr 19, 2024
@Frassle
Copy link
Member

Frassle commented Apr 19, 2024

Similar to #15984 looks like this is something specific about component providers. We already have tests for normal resources and stack transforms without outputs that work fine.

@Frassle
Copy link
Member

Frassle commented Apr 19, 2024

Ah nope got a repro with just a single normal custom resource, it's just intermittent.

Frassle added a commit that referenced this issue Apr 19, 2024
Frassle added a commit that referenced this issue Apr 19, 2024
Frassle added a commit that referenced this issue Apr 19, 2024
Frassle added a commit that referenced this issue Apr 19, 2024
Frassle added a commit that referenced this issue Apr 22, 2024
Frassle added a commit that referenced this issue Apr 23, 2024
github-merge-queue bot pushed a commit that referenced this issue Apr 23, 2024
<!--- 
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 #15973.

Ensures that the `rpcDone` promise covers the whole async operation
atomically.

## Checklist

- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
  - [ ] I have formatted my code using `gofumpt`

<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!--- 
User-facing changes require a CHANGELOG entry.
-->
- [x] 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 Cloud,
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
Cloud API version
<!-- @pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
@pulumi-bot pulumi-bot added the resolution/fixed This issue was fixed label Apr 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/transforms Old style SDK based or engine based transforms customer/feedback Feedback from customers customer/lighthouse Lighthouse customer bugs kind/bug Some behavior is incorrect or out of spec language/javascript resolution/fixed This issue was fixed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants