Bug 1896831 - Clone#452 for RBD PVC ( PVC size 1 GB) failed to be created for 600 secs
Summary: Clone#452 for RBD PVC ( PVC size 1 GB) failed to be created for 600 secs
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat OpenShift Container Storage
Classification: Red Hat Storage
Component: csi-driver
Version: 4.6
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: OCS 4.6.0
Assignee: Yug Gupta
QA Contact: Elad
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-11-11 16:15 UTC by Yuli Persky
Modified: 2020-12-17 06:25 UTC (History)
8 users (show)

Fixed In Version: 4.6.0-169.ci
Doc Type: No Doc Update
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-12-17 06:25:30 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github ceph ceph-csi pull 1678 0 None closed rbd: add minsnapshotsonimage flag 2021-01-12 09:06:23 UTC
Red Hat Product Errata RHSA-2020:5605 0 None None None 2020-12-17 06:25:44 UTC

Description Yuli Persky 2020-11-11 16:15:06 UTC
Description of problem:

I've run tests/e2e/performance/test_pvc_multi_clone_performance.py test for serial creation of 512 clone for single PVC ( calculated PVC size 1GB). 
The CephFS clones creation succeeded for all the 512 clones. 
The RBD clones creation failed after successfully creating 451 clones. 
Clone#452 was not created for 600 secs, the test failed afterwards. 


Version-Release number of selected component (if applicable):

(yulidir) [ypersky@qpas ocs-ci]$ oc version
Client Version: 4.5.15
Server Version: 4.6.0-0.nightly-2020-11-07-035509
Kubernetes Version: v1.19.0+9f84db3
(yulidir) [ypersky@qpas ocs-ci]$ 


(yulidir) [ypersky@qpas ocs-ci]$ oc get clusterversion
NAME      VERSION                             AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.6.0-0.nightly-2020-11-07-035509   True        False         18h     Cluster version is 4.6.0-0.nightly-2020-11-07-035509
(yulidir) [ypersky@qpas ocs-ci]$ 

(yulidir) [ypersky@qpas ocs-ci]$ oc rsh -n openshift-storage $(oc get pods -o wide -n openshift-storage|grep tool|awk '{print$1}')  rook version
 Ceph version 
 Ceph version 
rook: 4.6-73.15d47331.release_4.6
go: go1.15.2
(yulidir) [ypersky@qpas ocs-ci]$ 

(yulidir) [ypersky@qpas ocs-ci]$  oc rsh -n openshift-storage $(oc get pods -o wide -n openshift-storage|grep tool|awk '{print$1}') ceph version

ceph version 14.2.8-111.el8cp (2e6029d57bc594eceba4751373da6505028c2650) nautilus (stable)
(yulidir) [ypersky@qpas ocs-ci]$ 

(yulidir) [ypersky@qpas ocs-ci]$ oc describe pod $(oc get pods -n openshift-storage|grep operator|awk '{print$1}') -n openshift-storage|grep Image
              containerImage: quay.io/ocs-dev/ocs-operator:4.6.0
    Image:          quay.io/rhceph-dev/mcg-operator@sha256:a293f3c5933a28812b84e2fe90de40ad64ad0207660787b66e168303b0aafaac
    Image ID:       quay.io/rhceph-dev/mcg-operator@sha256:4ac7bc0e54d6190ece9cbc4c81e0644711f1adbb65fda48a2b43a9ab3b256aa1
              containerImage: quay.io/ocs-dev/ocs-operator:4.6.0
    Image:         quay.io/rhceph-dev/ocs-operator@sha256:7ba5917c82bd08472a221c4bc12f054fdc66fb02fc36ff59270554ca61379da1
    Image ID:      quay.io/rhceph-dev/ocs-operator@sha256:7ba5917c82bd08472a221c4bc12f054fdc66fb02fc36ff59270554ca61379da1
              containerImage: quay.io/ocs-dev/ocs-operator:4.6.0
    Image:         quay.io/rhceph-dev/rook-ceph@sha256:f2f9abc8f60ffb12fe1060f5b382f2775262fb106d485d7e1683e94f93e034af
    Image ID:      quay.io/rhceph-dev/rook-ceph@sha256:4e4515b4b8924c7fc079714bf43d31d457850718b2136c00e6114acf59f15b9e
(yulidir) [ypersky@qpas ocs-ci]$ 



(yulidir) [ypersky@qpas ocs-ci]$ oc describe pod $(oc get pods -n openshift-storage|grep mon-a|awk '{print$1}') -n openshift-storage|grep Image
    Image:         quay.io/rhceph-dev/rhceph@sha256:22ea8ee38cd8283f636c2eeb640eb4a1bb744efb18abee114517926f4a03bff9
    Image ID:      quay.io/rhceph-dev/rhceph@sha256:22ea8ee38cd8283f636c2eeb640eb4a1bb744efb18abee114517926f4a03bff9
    Image:         quay.io/rhceph-dev/rhceph@sha256:22ea8ee38cd8283f636c2eeb640eb4a1bb744efb18abee114517926f4a03bff9
    Image ID:      quay.io/rhceph-dev/rhceph@sha256:22ea8ee38cd8283f636c2eeb640eb4a1bb744efb18abee114517926f4a03bff9
    Image:         quay.io/rhceph-dev/rhceph@sha256:22ea8ee38cd8283f636c2eeb640eb4a1bb744efb18abee114517926f4a03bff9
    Image ID:      quay.io/rhceph-dev/rhceph@sha256:22ea8ee38cd8283f636c2eeb640eb4a1bb744efb18abee114517926f4a03bff9
(yulidir) [ypersky@qpas ocs-ci]$ 


How reproducible:



Steps to Reproduce:
1. Run tests/e2e/performance/test_pvc_multi_clone_performance.py on non LSO vmware environment 
2.
3.

Actual results:

RBD clone for 1GB PVC with about 60% data in it failed to be created for 600 secs. 


Expected results:



Clone for RBD PVC should be created within 600 secs and all the 512 clones should be created successfully. 

Additional info:

Log files will be uploaded shortly and a link to the logs will be posted in the comments.

Comment 2 Yuli Persky 2020-11-11 19:19:51 UTC
The logs are available here : 

http://rhsqe-repo.lab.eng.blr.redhat.com/OCS/ocs-qe-bugs/bz-1896831/

Comment 3 Yaniv Kaul 2020-11-12 09:32:36 UTC
1. What did you see in the logs?
2. Can you describe your environment, specifically is it powerful enough for performance tests? Is it dedicated?

Comment 4 Yuli Persky 2020-11-12 10:37:30 UTC
@Yaniv Kaul ,

Per your questions: 

1) I saw retries to create a clone , for 600 seconds the following command was run with 5 secs interval: 

Going to run oc --kubeconfig /home/ypersky/cluster-dirs/vmware/ypersky--perf-04/auth/kubeconfig -n namespace-test-ca2064087b7d47d5b8966e1867793ae4 get pvc pvc-clone-452-0a38cadaf54e4084ad8f17fd83c7d4b6 -o yaml

After timeout of 600 seconds passed and clone#452 was not created, the test was failed .

Comment 5 Yuli Persky 2020-11-12 11:59:31 UTC
@Yaniv, per your second question : 

2) The test was running on ypersky-perf-04 cluster on DC4. 
I was the only one working there, only one cluster per DC

3 worker nodes, 3 master nodes. 

There are 32 GB RAM and 12 CPUs for worker nodes. 
I realize that this is not a production level, therefore I'm going to run the same test on AWS and Azure and will post here the results. 
Also we will see whether the problem reproduces.

Comment 6 Yug Gupta 2020-11-12 12:02:08 UTC
Replicated the scenario on AWS with 512 clones of a PVC of size 1 GB with 600MB data, but the issue did not get reproduced for me on the first attempt. Some of the PVCs took longer than the others but finally reached the BOUND state after some time. Will wait for Yuli's analysis on the same.

Comment 7 Shyamsundar 2020-11-12 15:05:54 UTC
The ceph-csi plugin seems to be tight looping on flatten, and not returning an abort as flatten is in progress. This part needs investigation.

Log file: http://rhsqe-repo.lab.eng.blr.redhat.com/OCS/ocs-qe-bugs/bz-1896831/logs-20201112-003007/ocs-must-gather-us/quay-io-ocs-dev-ocs-must-gather-sha256-fbcaa53e653a3bb4c281dbb3e98706cfe9ee5f8effb1d177cbf6a694555c4fe5/namespaces/openshift-storage/pods/csi-rbdplugin-provisioner-697448756f-w49p7/csi-rbdplugin/csi-rbdplugin/logs/previous.log

Comments inline as <=== ... ===>

Logs of interest:
2020-11-10T23:06:01.482310415Z I1110 23:06:01.482252       1 utils.go:159] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 GRPC call: /csi.v1.Controller/CreateVolume
2020-11-10T23:06:01.485604806Z I1110 23:06:01.485551       1 utils.go:160] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 GRPC request: {"capacity_range":{"required_bytes":1073741824},"name":"pvc-62b64ef5-a213-4738-97cd-71e3433745b5","parameters":{"clusterID":"openshift-storage","imageFeatures":"layering","imageFormat":"2","pool":"ocs-storagecluster-cephblockpool"},"secrets":"***stripped***","volume_capabilities":[{"AccessType":{"Mount":{"fs_type":"ext4"}},"access_mode":{"mode":1}}],"volume_content_source":{"Type":{"Volume":{"volume_id":"0001-0011-openshift-storage-0000000000000001-a47d748a-23a1-11eb-a410-0a580a80020d"}}}}
2020-11-10T23:06:01.485827030Z I1110 23:06:01.485796       1 rbd_util.go:771] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 setting disableInUseChecks on rbd volume to: false
2020-11-10T23:06:01.487881565Z I1110 23:06:01.487842       1 omap.go:84] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 got omap values: (pool="ocs-storagecluster-cephblockpool", namespace="", name="csi.volume.a47d748a-23a1-11eb-a410-0a580a80020d"): map[csi.imageid:5f3376ea8f1b csi.imagename:csi-vol-a47d748a-23a1-11eb-a410-0a580a80020d csi.volname:pvc-8f95e554-28b2-4672-9fe2-ff7ca899f77f]
2020-11-10T23:06:01.544394356Z I1110 23:06:01.544327       1 omap.go:84] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 got omap values: (pool="ocs-storagecluster-cephblockpool", namespace="", name="csi.volumes.default"): map[]
2020-11-10T23:06:01.599402091Z I1110 23:06:01.599340       1 rbd_util.go:452] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 clone depth is (0), configured softlimit (4) and hardlimit (8) for ocs-storagecluster-cephblockpool/csi-vol-a47d748a-23a1-11eb-a410-0a580a80020d
2020-11-10T23:06:01.775872201Z I1110 23:06:01.775799       1 cephcmds.go:59] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 command succeeded: rbd [-m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789 --id csi-rbd-provisioner --keyfile=***stripped*** -c /etc/ceph/ceph.conf --format=json snap ls --all ocs-storagecluster-cephblockpool/csi-vol-a47d748a-23a1-11eb-a410-0a580a80020d]
2020-11-10T23:06:01.778196038Z I1110 23:06:01.778154       1 rbd_util.go:312] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 executing [rbd task add flatten ocs-storagecluster-cephblockpool/csi-vol-c531f1f3-23a1-11eb-a410-0a580a80020d-temp --id csi-rbd-provisioner --keyfile=/tmp/csi/keys/keyfile-052364570 -m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789] for image (csi-vol-c531f1f3-23a1-11eb-a410-0a580a80020d-temp) using mon 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789, pool ocs-storagecluster-cephblockpool

<=== initial flatten, seems to have been succesful ===> 2020-11-10T23:06:02.258382841Z I1110 23:06:02.258315       1 cephcmds.go:59] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 command succeeded: ceph [rbd task add flatten ocs-storagecluster-cephblockpool/csi-vol-c531f1f3-23a1-11eb-a410-0a580a80020d-temp --id csi-rbd-provisioner --keyfile=***stripped*** -m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789]
<=== processed as an error ===> 2020-11-10T23:06:02.258382841Z E1110 23:06:02.258361       1 rbd_util.go:434] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 failed to flatten ocs-storagecluster-cephblockpool/csi-vol-c531f1f3-23a1-11eb-a410-0a580a80020d-temp; err flatten in progress: flatten is in progress for image csi-vol-c531f1f3-23a1-11eb-a410-0a580a80020d-temp

<=== the loop continues ===>
2020-11-10T23:06:02.258434627Z I1110 23:06:02.258379       1 rbd_util.go:312] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 executing [rbd task add flatten ocs-storagecluster-cephblockpool/csi-vol-c960e155-23a1-11eb-a410-0a580a80020d-temp --id csi-rbd-provisioner --keyfile=/tmp/csi/keys/keyfile-052364570 -m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789] for image (csi-vol-c960e155-23a1-11eb-a410-0a580a80020d-temp) using mon 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789, pool ocs-storagecluster-cephblockpool
2020-11-10T23:06:03.412682529Z I1110 23:06:03.412620       1 cephcmds.go:59] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 command succeeded: ceph [rbd task add flatten ocs-storagecluster-cephblockpool/csi-vol-c960e155-23a1-11eb-a410-0a580a80020d-temp --id csi-rbd-provisioner --keyfile=***stripped*** -m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789]
2020-11-10T23:06:03.412682529Z E1110 23:06:03.412658       1 rbd_util.go:434] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 failed to flatten ocs-storagecluster-cephblockpool/csi-vol-c960e155-23a1-11eb-a410-0a580a80020d-temp; err flatten in progress: flatten is in progress for image csi-vol-c960e155-23a1-11eb-a410-0a580a80020d-temp

<=== the whole create request with ID 764 ends with resource exhaustion here ===>

2020-11-10T23:13:15.800981325Z I1110 23:13:15.800925       1 rbd_util.go:312] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 executing [rbd task add flatten ocs-storagecluster-cephblockpool/csi-vol-48cd53d6-23a9-11eb-a410-0a580a80020d-temp --id csi-rbd-provisioner --keyfile=/tmp/csi/keys/keyfile-052364570 -m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789] for image (csi-vol-48cd53d6-23a9-11eb-a410-0a580a80020d-temp) using mon 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789, pool ocs-storagecluster-cephblockpool
2020-11-10T23:13:17.084235670Z I1110 23:13:17.084164       1 cephcmds.go:59] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 command succeeded: ceph [rbd task add flatten ocs-storagecluster-cephblockpool/csi-vol-48cd53d6-23a9-11eb-a410-0a580a80020d-temp --id csi-rbd-provisioner --keyfile=***stripped*** -m 172.30.185.235:6789,172.30.198.237:6789,172.30.218.89:6789]
2020-11-10T23:13:17.084235670Z E1110 23:13:17.084208       1 rbd_util.go:434] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 failed to flatten ocs-storagecluster-cephblockpool/csi-vol-48cd53d6-23a9-11eb-a410-0a580a80020d-temp; err flatten in progress: flatten is in progress for image csi-vol-48cd53d6-23a9-11eb-a410-0a580a80020d-temp
2020-11-10T23:13:17.084334126Z E1110 23:13:17.084304       1 utils.go:163] ID: 764 Req-ID: pvc-62b64ef5-a213-4738-97cd-71e3433745b5 GRPC error: rpc error: code = ResourceExhausted desc = rbd image ocs-storagecluster-cephblockpool/csi-vol-a47d748a-23a1-11eb-a410-0a580a80020d has 451 snapshots

Comment 8 Shyamsundar 2020-11-12 16:45:59 UTC
(In reply to Shyamsundar from comment #7)
> The ceph-csi plugin seems to be tight looping on flatten, and not returning
> an abort as flatten is in progress. This part needs investigation.
> 
> Log file:
> http://rhsqe-repo.lab.eng.blr.redhat.com/OCS/ocs-qe-bugs/bz-1896831/logs-
> 20201112-003007/ocs-must-gather-us/quay-io-ocs-dev-ocs-must-gather-sha256-
> fbcaa53e653a3bb4c281dbb3e98706cfe9ee5f8effb1d177cbf6a694555c4fe5/namespaces/
> openshift-storage/pods/csi-rbdplugin-provisioner-697448756f-w49p7/csi-
> rbdplugin/csi-rbdplugin/logs/previous.log
> 

Request ID 764 finds that the snapshot limit (max 450) on the rbd image has exceeded limits and hence flattens all intermediate images before returning the resource exhausted error for the request. This takes >10 minutes as seen in the logs, causing all other create requests, for the same volume, in the interim to fail with operation in progress.

As the test timeout is 600 seconds, the test case fails due to the above.

Finally, a volume create for the same volume, post the request with ID 764 releases its locks, succeeds. The request ID of this is 785. Which basically means clone succeeds in the end once intermediate images are flattened, due to reaching the limits.

Although functionality is not broken, the delay in flattening intermediate images for a clone from a clone use case, causes the said behavior. We may need to check if we can use soft/hard limits in here to not flatten in bulk once the max limit is reached.

Comment 10 Raz Tamir 2020-11-17 15:43:21 UTC
Marking as a proposed blocker.
Mass clones might be considered as an edge case but this BZ is in POST so if possible to get a fix, QE can run the automated test to quickly verify

Comment 13 Yuli Persky 2020-11-25 10:15:33 UTC
The problem was not reproduced on the latest 4.6 build. 
Closing the bug.

Comment 16 errata-xmlrpc 2020-12-17 06:25:30 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 (Moderate: Red Hat OpenShift Container Storage 4.6.0 security, bug fix, enhancement update), 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/RHSA-2020:5605


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