Bug 1595065 - [svcat] svcat deprovision(unbind) with "--wait" option return "panic: runtime error: invalid memory address or nil pointer dereference" when executed against a remotely hosted cluster
Summary: [svcat] svcat deprovision(unbind) with "--wait" option return "panic: runtime...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: OpenShift Container Platform
Classification: Red Hat
Component: Service Catalog
Version: 3.10.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: ---
: 3.11.0
Assignee: Jay Boyd
QA Contact: Dongbo Yan
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-06-26 03:18 UTC by sunzhaohua
Modified: 2018-10-11 07:21 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Cause: In some scenarios using the command `svcat deprovision <service-instance-name> --wait` may sometimes result in the svcat command terminating with a panic error. Consequence: The deprovision command was executed the the program encountered a code bug when attempting wait for the instance to be fully deprovisioned.
Clone Of:
Environment:
Last Closed: 2018-10-11 07:20:54 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2018:2652 0 None None None 2018-10-11 07:21:18 UTC

Description sunzhaohua 2018-06-26 03:18:22 UTC
Description of problem:
svcat deprovision(unbind) with "--wait" option return "panic: runtime error: invalid memory address or nil pointer dereference" when executed against a remotely hosted cluster.
In cluster, "svcat unbind --name ups-instance3-bind1 --wait" work normally.

Version-Release number of selected component (if applicable):
$ svcat version
client: v3.10.8;Upstream:v0.1.19
server: v1.10.0+b81c8f8

How reproducible:
Always

Steps to Reproduce:
1. $ svcat describe instances ups-instance3
2. $ svcat unbind --name ups-instance3-bind1 --wait
3.

Actual results:
In cluster, `svcat unbind --name ups-instance3-bind1 --wait` work normally. Out of cluster the binding was deleted but binding name was not printed, and output "panic: runtime error: invalid memory address or nil pointer dereference". 

[root@ip-172-18-12-11 ~]# svcat describe instances ups-instance3
  Name:        ups-instance3                                                                      
  Namespace:   szh-project                                                                        
  Status:      Ready - The instance was provisioned successfully @ 2018-06-26 02:43:03 +0000 UTC  
  Class:       user-provided-service                                                              
  Plan:        default                                                                            

Parameters:
  {}

Bindings:
         NAME           STATUS  
+---------------------+--------+
  ups-instance3         Ready   
  ups-instance3-bind1   Ready 
  ups-instance3-bind2   Ready   

In cluster:
[root@ip-172-18-12-11 ~]# svcat unbind --name ups-instance3-bind1 --wait
deleted ups-instance3-bind1

Out of cluster:
[szh@localhost ~]$ svcat unbind --name ups-instance3-bind2 --wait
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x178 pc=0xedf887]

goroutine 1 [running]:
github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog.(*SDK).BindingHasStatus(0xc42048b840, 0x0, 0x1208580, 0x6, 0xc42000e078)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog/binding.go:246 +0x37
github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog.(*SDK).IsBindingFailed(0xc42048b840, 0x0, 0xb)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog/binding.go:241 +0x4a
github.com/kubernetes-incubator/service-catalog/cmd/svcat/binding.(*unbindCmd).deleteBinding(0xc420240ea0, 0x7f1d859ed278, 0xc420240ea0)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/binding/unbind_cmd.go:100 +0x1c1
github.com/kubernetes-incubator/service-catalog/cmd/svcat/binding.(*unbindCmd).Run(0xc420240ea0, 0xc420240ea0, 0xc420266000)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/binding/unbind_cmd.go:83 +0x5b
github.com/kubernetes-incubator/service-catalog/cmd/svcat/command.RunE.func1(0xc420262480, 0xc4202411d0, 0x0, 0x3, 0x0, 0x0)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/command/command.go:81 +0x2f
github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra.(*Command).execute(0xc420262480, 0xc420241110, 0x3, 0x3, 0xc420262480, 0xc420241110)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra/command.go:599 +0x3e8
github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc42025c000, 0xc42025cfc0, 0xc42025c240, 0xc420256140)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra/command.go:689 +0x2fe
github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra.(*Command).Execute(0xc42025c000, 0xc42025c000, 0xc4202407e0)
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra/command.go:648 +0x2b
main.main()
        /builddir/build/BUILD/atomic-enterprise-service-catalog-git-1442.44299e9/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/main.go:59 +0x33c


[root@ip-172-18-12-11 ~]# svcat describe instances ups-instance3
  Name:        ups-instance3                                                                      
  Namespace:   szh-project                                                                        
  Status:      Ready - The instance was provisioned successfully @ 2018-06-26 02:43:03 +0000 UTC  
  Class:       user-provided-service                                                              
  Plan:        default                                                                            

Parameters:
  {}

Bindings:
         NAME           STATUS  
+---------------------+--------+
  ups-instance3         Ready     


Expected results:
Out of cluster the command work normally.

Additional info:
svcat deprovision with "--wait" option has same problem.

Comment 1 Zhang Cheng 2018-06-26 03:34:35 UTC
We are setting target release to 3.11, please correct us if you have any other thinking. Thanks.

Comment 2 Jay Boyd 2018-08-02 15:15:34 UTC
Fixed upstream by https://github.com/kubernetes-incubator/service-catalog/pull/2049.  

This fix is included in OpenShift Service Catalog with v0.1.22:  https://github.com/openshift/service-catalog/pull/16

Current openshift builds are using 0.1.27.

Comment 3 Dongbo Yan 2018-08-20 08:30:21 UTC
Test with
# svcat version
Client Version: v3.11.0-0.17.0;Upstream:v0.1.27
Server Version: v1.11.0+d4cacc0

# svcat unbind --name dyan-bind6 --wait
waiting for the binding(s) to be deleted...
deleted dyan-bind6

could move to verified

Comment 5 Fan Jia 2018-09-07 08:35:49 UTC
Description of problem:
If deprovision instance with flags '--wait' out of cluster,will show the panic message ,and the instance will be provisioned successfully.


Version-Release number of selected component (if applicable):
#svcat version
Client Version: v3.11.0-0.28.0;Upstream:v0.1.30
Server Version: v1.11.0+d4cacc0


How reproducible:
Always

Steps to Reproduce:
1. # svcat describe instances ups-instance
2. # svcat deprovision ups-instance2 -n szh-project --wait --interval 5s
3.

Actual results:
# svcat describe instances ups-instance
  Name:        ups-instance                                                                       
  Namespace:   szh-project                                                                        
  Status:      Ready - The instance was provisioned successfully @ 2018-09-07 05:29:59 +0000 UTC  
  Class:       user-provided-service                                                              
  Plan:        default                                                                            

Parameters:
  No parameters defined

Bindings:
No bindings defined


# svcat deprovision ups-instance2 -n szh-project --wait --interval 5s
Waiting for the instance to be deleted...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x228 pc=0xf58b97]

goroutine 1 [running]:
github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog.(*SDK).InstanceHasStatus(0xc420372b60, 0x0, 0x129e498, 0x6, 0xc4203b07d0)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog/instance.go:269 +0x37
github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog.(*SDK).IsInstanceFailed(0xc420372b60, 0x0, 0xb)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/pkg/svcat/service-catalog/instance.go:264 +0x4a
github.com/kubernetes-incubator/service-catalog/cmd/svcat/instance.(*deprovisonCmd).deprovision(0xc420265340, 0x1b69ae0, 0xc4202c54a0)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/instance/deprovision_cmd.go:83 +0x1fd
github.com/kubernetes-incubator/service-catalog/cmd/svcat/instance.(*deprovisonCmd).Run(0xc420265340, 0x0, 0x0)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/instance/deprovision_cmd.go:67 +0x2b
github.com/kubernetes-incubator/service-catalog/cmd/svcat/command.RunE.func1(0xc4202f2c80, 0xc4202fe3c0, 0x1, 0x6, 0x0, 0x0)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/command/command.go:83 +0x2f
github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra.(*Command).execute(0xc4202f2c80, 0xc4202fe300, 0x6, 0x6, 0xc4202f2c80, 0xc4202fe300)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra/command.go:756 +0x475
github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc4202e0000, 0xc4202e0780, 0xc4202e0280, 0xc420264a20)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra/command.go:846 +0x334
github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra.(*Command).Execute(0xc4202e0000, 0xc4202e0000, 0xc42029dce0)
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/vendor/github.com/spf13/cobra/command.go:794 +0x2b
main.main()
	/builddir/build/BUILD/atomic-enterprise-service-catalog-git-1616.2b6b3b7/_output/local/go/src/github.com/kubernetes-incubator/service-catalog/cmd/svcat/main.go:59 +0x33c


Expected results:
Inside of cluster the command work normally.

Additional info:
svcat unbind with "--wait" option doesn't have same problem now.

Comment 6 Jay Boyd 2018-09-07 13:28:39 UTC
The fix for this is in Upstream v0.1.31.  Unfortunately the version tested in doesn't contain this fix (0.1.30).  Please retest with the latest version of svcat. 
 
svcat --version needs to report "v3.11.0-0.32.0;Upstream:v0.1.31" or higher.

Comment 7 Fan Jia 2018-09-10 03:14:29 UTC
chang status to ON_QA

Comment 8 Fan Jia 2018-09-10 03:16:44 UTC
retest with version "Upstream:v0.1.31"

Version-Release number of selected component (if applicable):
Client Version: v3.11.0-0.32.0;Upstream:v0.1.31
Server Version: v1.11.0+d4cacc0

Deprovison instance outside of  cluster by `svcat command` and no panic message show again.

Comment 10 errata-xmlrpc 2018-10-11 07:20:54 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2018:2652


Note You need to log in before you can comment on or make changes to this bug.