Bug 1776801

Summary: Bricks are not available when volume create fails
Product: [Community] GlusterFS Reporter: Sanju <srakonde>
Component: glusterdAssignee: Sanju <srakonde>
Status: CLOSED NEXTRELEASE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: mainlineCC: bugs, pasik, spamecha, srakonde
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1773991 Environment:
Last Closed: 2019-12-05 08:37:51 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1773991    
Bug Blocks:    

Description Sanju 2019-11-26 12:16:37 UTC
+++ This bug was initially created as a clone of Bug #1773991 +++

Description of problem:
If volume creation fails, glusterd reports bricks to be part of volume.

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


How reproducible:
Always


Steps to Reproduce:
1.Fail to create a volume for some reason.
2 Trigger the create command again with same bricks.


Actual results:
[root@dhcp42-109 glusterfs]# gluster v info
No volumes present
[root@dhcp42-109 glusterfs]# gluster v create test-vol1 replica 3 10.70.42.109:/home/gluster/b8 10.70.42.109:/home/gluster/b7 10.70.42.109:/home/gluster/b6
volume create: test-vol1: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal. Bricks should be on different nodes to have best fault tolerant configuration. Use 'force' at the end of the command if you want to override this behavior. 
[root@dhcp42-109 glusterfs]# gluster v create test-vol1 replica 3 10.70.42.109:/home/gluster/b8 10.70.42.109:/home/gluster/b7 10.70.42.109:/home/gluster/b6
volume create: test-vol1: failed: /home/gluster/b8 is already part of a volume
[root@dhcp42-109 glusterfs]# gluster v info
No volumes present


Expected results:
If no volume is created, the brick should be available

Additional info:

--- Additional comment from Sanju on 2019-11-26 16:57:49 IST ---

Hi Sheetal,

Every cli transaction goes through four phases: locking, staging, commit, unlock.

We do all kinds of validations in staging phase of transaction, once the validation fails we error out. Any modifications done in regards to the current transaction, will not be reverted as we don't have roll-back mechanism in glusterd architecture.

When volume create operation is issued, we set xattrs on the bricks. But, if the transaction fails, the xattrs will remain on the bricks. This causes subsequent volume create transactions to fail if the force option is not used.

I will send out a patch to fix this. 

Thanks,
Sanju

--- Additional comment from Worker Ant on 2019-11-26 17:24:19 IST ---

REVIEW: https://review.gluster.org/23760 (glusterd: set xaatrs afer checking the brick order) posted (#1) for review on master by Sanju Rakonde

Comment 1 Worker Ant 2019-11-26 12:24:32 UTC
REVIEW: https://review.gluster.org/23760 (glusterd: set xaatrs after checking the brick order) posted (#3) for review on master by Sanju Rakonde

Comment 2 Worker Ant 2019-12-05 08:37:51 UTC
REVIEW: https://review.gluster.org/23760 (glusterd: set xaatrs after checking the brick order) merged (#4) on master by MOHIT AGRAWAL