CiscoDevNet / terraform-provider-aci

Terraform Cisco ACI provider
https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs
Mozilla Public License 2.0
84 stars 99 forks source link

Test case in aci_rest_managed causing random CI failures #1218

Closed samiib closed 2 weeks ago

samiib commented 1 month ago

Community Note

Problem

The TestAccAciRestManaged_importWithIpv6 test case in resource_aci_rest_managed_test.go is causing random failures in the CI. It is consistently reporting data race warnings and also randomly passes or fails.

Terraform Version

1.7

APIC version and APIC Platform

Affected Resource(s)

Terraform Configuration Files

The test configuration:

resource "aci_rest_managed" "tenant_%[2]s" {
    dn = "uni/tn-%[1]s"
    class_name = "fvTenant"
    content = {
        name = "%[1]s"
    }
    child {
        rn         = "ctx-VRF1"
        class_name = "fvCtx"
        content = {
            name = "VRF1"
        }
    }
    child {
        rn         = "ctx-VRF2"
        class_name = "fvCtx"
        content = {
            name = "VRF2"
        }
    }
}

resource "aci_rest_managed" "bd_%[2]s" {
    dn = "${aci_rest_managed.tenant_%[2]s.id}/BD-%[1]s"
    class_name = "fvBD"
    content = {
        name  = "%[1]s"
    }
    child {
        rn         = "rsctx"
        class_name = "fvRsCtx"
        content = {
            tnFvCtxName = "VRF1"
        }
    }
}

resource "aci_rest_managed" "subnet_%[2]s" {
    dn         = "${aci_rest_managed.bd_%[2]s.id}/subnet-[%[3]s]"
    class_name = "fvSubnet"
    content = {
        ip           = "%[3]s"
        scope        = "private"
        ipDPLearning = "enabled"
        ctrl         = "nd"
    }
}

resource "aci_rest_managed" "bd_%[2]s_2" {
    dn = "${aci_rest_managed.tenant_%[2]s.id}/BD-%[1]s_2"
    class_name = "fvBD"
    content = {
        name  = "%[1]s_2"
    }
    child {
        rn         = "rsctx"
        class_name = "fvRsCtx"
        content = {
            tnFvCtxName = "VRF2"
        }
    }
    child {
        rn         = "subnet-[%[4]s]"
        class_name = "fvSubnet"
        content = {
            ip = "%[4]s"
            scope        = "private"
            ipDPLearning = "enabled"
            ctrl         = "nd"
        }
    }
}

Debug Output

=== RUN   TestAccAciRestManaged_importWithIpv6
==================
WARNING: DATA RACE
Read at 0x00c0001[90](https://github.com/CiscoDevNet/terraform-provider-aci/actions/runs/9106634004/job/25034174614?pr=1217#step:5:91)e99 by goroutine 134694:
  github.com/ciscoecosystem/aci-go-client/v2/client.(*Client).MakeRestRequest()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/ciscoecosystem/aci-go-client/v2/client/client.go:412 +0x53a
  github.com/CiscoDevNet/terraform-provider-aci/v2/internal/provider.DoRestRequestEscapeHtml()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/internal/provider/utils.go:54 +0x1f1
  github.com/CiscoDevNet/terraform-provider-aci/v2/internal/provider.(*AciRestManagedResource).Delete()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/internal/provider/resource_aci_rest_managed.go:356 +0x615
  github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).DeleteResource()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-framework/internal/fwserver/server_deleteresource.go:100 +0xa4c
  github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-framework/internal/fwserver/server_applyresourcechange.go:79 +0x7e4
  github.com/hashicorp/terraform-plugin-framework/internal/proto6server.(*Server).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-framework/internal/proto6server/server_applyresourcechange.go:55 +0x5b3
  github.com/hashicorp/terraform-plugin-mux/tf6muxserver.(*muxServer).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-mux/tf6muxserver/mux_server_ApplyResourceChange.go:36 +0x2c1
  github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server/server.go:846 +0x5b1
  github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ApplyResourceChange_Handler()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:518 +0x22d
  google.golang.org/grpc.(*Server).processUnaryRPC()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1386 +0x19ac
  google.golang.org/grpc.(*Server).handleStream()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1797 +0x1a51
  google.golang.org/grpc.(*Server).serveStreams.func2.1()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1027 +0x15c

Previous write at 0x00c000190e99 by goroutine 1346[92](https://github.com/CiscoDevNet/terraform-provider-aci/actions/runs/9106634004/job/25034174614?pr=1217#step:5:93):
  github.com/ciscoecosystem/aci-go-client/v2/client.(*Client).Authenticate()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/ciscoecosystem/aci-go-client/v2/client/client.go:455 +0x412
  github.com/ciscoecosystem/aci-go-client/v2/client.(*Client).InjectAuthenticationHeader()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/ciscoecosystem/aci-go-client/v2/client/auth.go:53 +0x21a
  github.com/ciscoecosystem/aci-go-client/v2/client.(*Client).MakeRestRequest()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/ciscoecosystem/aci-go-client/v2/client/client.go:418 +0x8a4
  github.com/CiscoDevNet/terraform-provider-aci/v2/internal/provider.DoRestRequestEscapeHtml()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/internal/provider/utils.go:54 +0x1f1
  github.com/CiscoDevNet/terraform-provider-aci/v2/internal/provider.(*AciRestManagedResource).Delete()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/internal/provider/resource_aci_rest_managed.go:356 +0x615
  github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).DeleteResource()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-framework/internal/fwserver/server_deleteresource.go:100 +0xa4c
  github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-framework/internal/fwserver/server_applyresourcechange.go:79 +0x7e4
  github.com/hashicorp/terraform-plugin-framework/internal/proto6server.(*Server).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-framework/internal/proto6server/server_applyresourcechange.go:55 +0x5b3
  github.com/hashicorp/terraform-plugin-mux/tf6muxserver.(*muxServer).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-mux/tf6muxserver/mux_server_ApplyResourceChange.go:36 +0x2c1
  github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ApplyResourceChange()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server/server.go:846 +0x5b1
  github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ApplyResourceChange_Handler()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:518 +0x22d
  google.golang.org/grpc.(*Server).processUnaryRPC()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1386 +0x19ac
  google.golang.org/grpc.(*Server).handleStream()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1797 +0x1a51
  google.golang.org/grpc.(*Server).serveStreams.func2.1()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1027 +0x15c

Goroutine 1346[94](https://github.com/CiscoDevNet/terraform-provider-aci/actions/runs/9106634004/job/25034174614?pr=1217#step:5:95) (running) created at:
  google.golang.org/grpc.(*Server).serveStreams.func2()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1038 +0x224
  google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/internal/transport/http2_server.go:619 +0x3a01
  google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/internal/transport/http2_server.go:660 +0x285
  google.golang.org/grpc.(*Server).serveStreams()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1021 +0x6bb
  google.golang.org/grpc.(*Server).handleRawConn.func1()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:[95](https://github.com/CiscoDevNet/terraform-provider-aci/actions/runs/9106634004/job/25034174614?pr=1217#step:5:96)7 +0x86

Goroutine 134692 (running) created at:
  google.golang.org/grpc.(*Server).serveStreams.func2()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:1038 +0x224
  google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/internal/transport/http2_server.go:619 +0x3a01
  google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/internal/transport/http2_server.go:660 +0x285
  google.golang.org/grpc.(*Server).serveStreams()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:[102](https://github.com/CiscoDevNet/terraform-provider-aci/actions/runs/9106634004/job/25034174614?pr=1217#step:5:103)1 +0x6bb
  google.golang.org/grpc.(*Server).handleRawConn.func1()
      /home/runner/work/terraform-provider-aci/terraform-provider-aci/vendor/google.golang.org/grpc/server.go:957 +0x86
==================
    testing.go:1465: race detected during execution of test
--- FAIL: TestAccAciRestManaged_importWithIpv6 (7.26s)

Expected Behaviour

Expect the test to pass in the CI.

Actual Behaviour

The test passes sometimes but also has data race issues detected.

Steps to Reproduce

Uncomment the test and re-run the CI.

Important Factoids

This doesn't appear to be occurring locally.

References