conradludgate/terraform-provider-spotify

Panic when using `spotify_search_track`

Closed this issue · 1 comments

When using the spotify_search_track data source, it panics.

What I did

I used sample code to create a playlist and add some tracks. This worked correctly the first time and on subsequent times when making small changes.

Then I added these lines to search for a track.

data "spotify_search_track" "beatles_search" {
  name = "Here comes the sun"
}

What happened

When I added three lines to use spotify_search_track, it threw a panic.

Error: rpc error: code = Unavailable desc = transport is closing

panic: runtime error: invalid memory address or nil pointer dereference
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1b061c6]
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: goroutine 25 [running]:
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: main.dataSourceSearchTrackRead(0xc0000f8620, 0x1d73960, 0xc000364820, 0xc0000f8620, 0x0)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	github.com/conradludgate/terraform-provider-spotify/data_source_search_track.go:167 +0xa86
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).ReadDataApply(0xc0003683f0, 0xc000365d80, 0x1d73960, 0xc000364820, 0xc00037f5a8, 0x1, 0x0)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	github.com/hashicorp/terraform-plugin-sdk@v1.15.0/helper/schema/resource.go:403 +0x88
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Provider).ReadDataApply(0xc000044500, 0xc00014daf8, 0xc000365d80, 0xc000365d80, 0x0, 0x0)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	github.com/hashicorp/terraform-plugin-sdk@v1.15.0/helper/schema/provider.go:451 +0x8f
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ReadDataSource(0xc00000ef20, 0x1f4fd00, 0xc00010f7a0, 0xc0008509c0, 0xc00000ef20, 0xc00010f7a0, 0xc0004f1ba0)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	github.com/hashicorp/terraform-plugin-sdk@v1.15.0/internal/helper/plugin/grpc_provider.go:1036 +0x42d
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ReadDataSource_Handler(0x1d37220, 0xc00000ef20, 0x1f4fd00, 0xc00010f7a0, 0xc00008b7a0, 0x0, 0x1f4fd00, 0xc00010f7a0, 0xc0004ba230, 0x63)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	github.com/hashicorp/terraform-plugin-sdk@v1.15.0/internal/tfplugin5/tfplugin5.pb.go:3341 +0x214
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: google.golang.org/grpc.(*Server).processUnaryRPC(0xc00037d340, 0x1f5ad80, 0xc000642f00, 0xc0000da400, 0xc0004f5140, 0x25adcb0, 0x0, 0x0, 0x0)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	google.golang.org/grpc@v1.34.0/server.go:1210 +0x522
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: google.golang.org/grpc.(*Server).handleStream(0xc00037d340, 0x1f5ad80, 0xc000642f00, 0xc0000da400, 0x0)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	google.golang.org/grpc@v1.34.0/server.go:1533 +0xd05
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc0003b01d0, 0xc00037d340, 0x1f5ad80, 0xc000642f00, 0xc0000da400)
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	google.golang.org/grpc@v1.34.0/server.go:871 +0xa5
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: created by google.golang.org/grpc.(*Server).serveStreams.func1
2021-05-14T11:28:02.214-0700 [DEBUG] plugin.terraform-provider-spotify_v0.1.4: 	google.golang.org/grpc@v1.34.0/server.go:869 +0x1fd
2021/05/14 11:28:02 [TRACE] vertex "spotify_playlist.playlist": visit complete
2021/05/14 11:28:02 [TRACE] vertex "spotify_playlist.playlist": dynamic subgraph encountered errors
2021/05/14 11:28:02 [TRACE] vertex "spotify_playlist.playlist": visit complete
2021/05/14 11:28:02 [TRACE] vertex "data.spotify_search_track.my_search": visit complete
2021/05/14 11:28:02 [TRACE] vertex "spotify_playlist.playlist (expand)": dynamic subgraph encountered errors
2021/05/14 11:28:02 [TRACE] vertex "spotify_playlist.playlist (expand)": visit complete
2021-05-14T11:28:02.217-0700 [WARN]  plugin.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = transport is closing"
2021/05/14 11:28:02 [TRACE] vertex "data.spotify_search_track.my_search": dynamic subgraph encountered errors
2021/05/14 11:28:02 [TRACE] vertex "data.spotify_search_track.my_search": visit complete
2021/05/14 11:28:02 [TRACE] vertex "data.spotify_search_track.my_search (expand)": dynamic subgraph encountered errors
2021/05/14 11:28:02 [TRACE] vertex "data.spotify_search_track.my_search (expand)": visit complete
2021/05/14 11:28:02 [TRACE] dag/walk: upstream of "meta.count-boundary (EachMode fixup)" errored, so skipping
2021/05/14 11:28:02 [TRACE] dag/walk: upstream of "provider[\"registry.terraform.io/conradludgate/spotify\"] (close)" errored, so skipping
2021/05/14 11:28:02 [TRACE] dag/walk: upstream of "root" errored, so skipping
2021-05-14T11:28:02.217-0700 [DEBUG] plugin: plugin process exited: path=.terraform/providers/registry.terraform.io/conradludgate/spotify/0.1.4/darwin_amd64/terraform-provider-spotify_v0.1.4 pid=57876 error="exit status 2"
2021/05/14 11:28:02 [TRACE] statemgr.Filesystem: removing lock metadata file .terraform.tfstate.lock.info
2021/05/14 11:28:02 [TRACE] statemgr.Filesystem: unlocking terraform.tfstate using fcntl flock
2021-05-14T11:28:02.217-0700 [DEBUG] plugin: plugin exited

What I expected to happen

I expected to receive a list of tracks or a single track that could be used in a playlist.

Full example

terraform {
  required_providers {
    spotify = {
      version = "~> 0.1.4"
      source  = "conradludgate/spotify"
    }
  }
}

variable "spotify_api_key" {
  type = string
}

provider "spotify" {
  api_key = var.spotify_api_key
}

resource "spotify_playlist" "playlist" {
  name        = "My Terraform playlist Friday"
  description = "My Terraform playlist is so awesome"
  public      = false

  tracks = [
    data.spotify_track.overkill.id,
    data.spotify_track.blackwater.id,
    data.spotify_track.overkill.id,
    data.spotify_track.digital-love.id,
  ]
}

data "spotify_search_track" "beatles_search" {
  name = "Here comes the sun"
}

data "spotify_track" "overkill" {
  url = "https://open.spotify.com/track/4XdaaDFE881SlIaz31pTAG"
}

data "spotify_track" "blackwater" {
  spotify_id = "4lE6N1E0L8CssgKEUCgdbA"
}

data "spotify_track" "digital-love" {
  url = "https://open.spotify.com/track/2VEZx7NWsZ1D0eJ4uv5Fym?si=62441a1b053c4f66"
}

@topfunky I got it to work by adding name to parameter to the data resource AND at least another query type.

data "spotify_search_track" "search" {
    name = "Mr.Brightside"
    artists = [ "The Killers" ]
    # album = "Hot Fuss"
}