Description of problem: When a second level directory is created and then moved, it logs one NEW entry for the concerned directory - whose path is still the old location and no longer valid. It should ideally be logging a NEW entry for the directory at the new path. Version-Release number of selected component (if applicable): glusterfs-3.7.1-3.el6rhs.x86_64 How reproducible: Always Steps to Reproduce: 1. Have a 2 node cluster, and a 2*2 dist-rep volume 'pluto' and create a glusterfind session 'sessp2' 2. Create a couple of files and directories 'dir1' and 'dir1/dir2' 3. Move the directory from dir1 to <mountpoint> mv dir1/dir2 <mountpoint> 4. Run glusterfind pre and post and verify the contents of outfile Actual results: Step4 generates an outfile which has a NEW entry for 'dir2' at the location : NEW dir1/dir2 Expected results: The location of 'dir2' should be its current and most recent one and not the old one. Additional info: [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# gluster v create pluto replica 2 10.70.43.93:/rhs/thinbrick1/pluto 10.70.43.155:/rhs/thinbrick1/pluto 10.70.43.93:/rhs/thinbrick2/pluto 10.70.43.155:/rhs/thinbrick2/pluto volume create: pluto: success: please start the volume to access data [root@dhcp43-93 ~]# gluster v info pluto Volume Name: pluto Type: Distributed-Replicate Volume ID: d17afc82-f5e4-44ac-816b-5c5705879bda Status: Created Number of Bricks: 2 x 2 = 4 Transport-type: tcp Bricks: Brick1: 10.70.43.93:/rhs/thinbrick1/pluto Brick2: 10.70.43.155:/rhs/thinbrick1/pluto Brick3: 10.70.43.93:/rhs/thinbrick2/pluto Brick4: 10.70.43.155:/rhs/thinbrick2/pluto Options Reconfigured: performance.readdir-ahead: on [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# gluster v start pluto gluster volume start: pluto: success [root@dhcp43-93 ~]# glusterfind list SESSION VOLUME SESSION TIME --------------------------------------------------------------------------- sessn2 nash 2015-06-16 20:17:24 sessn3 nash 2015-06-16 17:47:02 sesso1 ozone 2015-06-15 23:48:42 sessn1 nash 2015-06-16 18:02:11 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind create sessp1 pluto Session sessp1 created with volume pluto [root@dhcp43-93 ~]# glusterfind create sessp2 pluto Session sessp2 created with volume pluto [root@dhcp43-93 ~]# glusterfind list SESSION VOLUME SESSION TIME --------------------------------------------------------------------------- sessn2 nash 2015-06-16 20:17:24 sessn3 nash 2015-06-16 17:47:02 sessp1 pluto 2015-06-16 21:12:45 sesso1 ozone 2015-06-15 23:48:42 sessn1 nash 2015-06-16 18:02:11 sessp2 pluto 2015-06-16 21:12:53 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# cd /var/lib/glusterd/glusterfind/ .keys/ sessn1/ sessn2/ sessn3/ sesso1/ sesso2/ sesso3/ sessp1/ sessp2/ sessv1/ [root@dhcp43-93 ~]# cd /var/lib/glusterd/glusterfind/sessp1/pluto/ %2Frhs%2Fthinbrick1%2Fpluto.status sessp1_pluto_secret.pem status %2Frhs%2Fthinbrick2%2Fpluto.status sessp1_pluto_secret.pem.pub [root@dhcp43-93 ~]# cd /var/lib/glusterd/glusterfind/sessp1/pluto/ %2Frhs%2Fthinbrick1%2Fpluto.status sessp1_pluto_secret.pem status %2Frhs%2Fthinbrick2%2Fpluto.status sessp1_pluto_secret.pem.pub [root@dhcp43-93 ~]# cd /var/lib/glusterd/glusterfind/sessp1/pluto/^C [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# date Tue Jun 16 21:14:12 IST 2015 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind pre usage: glusterfind pre [-h] [--debug] [--full] [--disable-partial] [--output-prefix OUTPUT_PREFIX] [--regenerate-outfile] [-N] session volume outfile glusterfind pre: error: too few arguments [root@dhcp43-93 ~]# glusterfind pre sessp1 pluto /tmp/outp.txt Generated output file /tmp/outp.txt [root@dhcp43-93 ~]# cat /tmp/outp.txt NEW test1 NEW test2 NEW dir1 NEW dir1%2F%2Fdir2 NEW dir1%2Fdir2%2F%2Fa [root@dhcp43-93 ~]# glusterfind post sessp1 pluto Session sessp1 with volume pluto updated [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind pre sessp1 pluto /tmp/outp.txt Generated output file /tmp/outp.txt [root@dhcp43-93 ~]# cat /tmp/outp.txt RENAME test1 dir1%2Fdir2%2F%2Ftest1 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind post sessp1 pluto Session sessp1 with volume pluto updated [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind pre sessp1 pluto /tmp/outp.txt Generated output file /tmp/outp.txt [root@dhcp43-93 ~]# cat /tmp/outp.txt [root@dhcp43-93 ~]# date Tue Jun 16 21:16:50 IST 2015 [root@dhcp43-93 ~]# glusterfind pre sessp2 pluto /tmp/outp2.txt Generated output file /tmp/outp2.txt [root@dhcp43-93 ~]# cat /tmp/outp2.txt NEW dir2%2F%2Ftest1 NEW test2 NEW dir1 NEW dir1%2F%2Fdir2 >>> Wrong! Expected: "NEW dir2" NEW dir2%2F%2Fa [root@dhcp43-93 ~]# date Tue Jun 16 21:17:55 IST 2015 [root@dhcp43-93 ~]# rpm -qa | grep glusterfs glusterfs-api-3.7.1-3.el6rhs.x86_64 glusterfs-libs-3.7.1-3.el6rhs.x86_64 glusterfs-3.7.1-3.el6rhs.x86_64 glusterfs-fuse-3.7.1-3.el6rhs.x86_64 glusterfs-server-3.7.1-3.el6rhs.x86_64 glusterfs-client-xlators-3.7.1-3.el6rhs.x86_64 glusterfs-cli-3.7.1-3.el6rhs.x86_64 [root@dhcp43-93 ~]# ############### CLIENT LOGS ########################### [root@dhcp43-71 ~]# [root@dhcp43-71 ~]# mkdir /mnt/pp [root@dhcp43-71 ~]# mount -t nfs 10.70.43.155:/pluto /mnt/pp [root@dhcp43-71 ~]# cd /mnt/pp [root@dhcp43-71 pp]# ls [root@dhcp43-71 pp]# ls -a . .. .trashcan [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# echo "whatever" > test1 [root@dhcp43-71 pp]# echo "hello world" > test2 [root@dhcp43-71 pp]# mkdir dir1 [root@dhcp43-71 pp]# mkdir dir1/dir2 [root@dhcp43-71 pp]# touch dir1/dir2/a [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# ls -a . .. dir1 test1 test2 .trashcan [root@dhcp43-71 pp]# ls -lrt total 2 -rw-r--r--. 1 root root 9 Jun 16 21:13 test1 -rw-r--r--. 1 root root 12 Jun 16 21:13 test2 drwxr-xr-x. 3 root root 34 Jun 16 21:13 dir1 [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# mv test1 dir1/dir2/ [root@dhcp43-71 pp]# ls -a . .. dir1 test2 .trashcan [root@dhcp43-71 pp]# mv dir1/dir2/ . [root@dhcp43-71 pp]# ls -a . .. dir1 dir2 test2 .trashcan [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# ls dir1 [root@dhcp43-71 pp]# ls dir2 a test1 [root@dhcp43-71 pp]# ls -a . .. dir1 dir2 test2 .trashcan [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# mv dir2 newdir2 [root@dhcp43-71 pp]# [root@dhcp43-71 pp]# ls -a . .. dir1 newdir2 test2 .trashcan [root@dhcp43-71 pp]#
Addressed by Vijay Bellur with http://review.gluster.org/#/c/11356/ Although this patch restores Glusterfs to its earlier level, at this point, Raghavendra G has some reservations about recording directory renames at all the bricks. Please review patch comments for more info.
The BUG#1235236 also fixes this.
BUG#1235236 is MODIFIED. Hence moving this BUG to MODIFIED.
Tested and verified this on the build 3.7.1-7 Every directory creation is recorded as a NEW entry. Rename of a direcotry with same/different name, across same/different location is recorded as a RENAME entry with the correct <old path> and <new path>. Directory creation followed by a rename is recorded as a NEW entry with the new path. Moving this to fixed in 3.1 everglades. Pasted below are the logs: SERVER ========= [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# gluster v create ozone replica 2 10.70.43.93:/rhs/thinbrick1/ozone 10.70.43.155:/rhs/thinbrick1/ozonen 10.70.43.93:/rhs/thinbrick2/ozone 10.70.43.155:/rhs/thinbrick2/ozone volume create: ozone: success: please start the volume to access data [root@dhcp43-93 ~]# gluster v start ozone volume start: ozone: success [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind list SESSION VOLUME SESSION TIME --------------------------------------------------------------------------- ss2 slave 2015-06-27 00:08:39 ss1 slave 2015-06-27 00:25:26 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind create so1 ozone Session so1 created with volume ozone [root@dhcp43-93 ~]# glusterfind create so2 ozone Session so2 created with volume ozone [root@dhcp43-93 ~]# glusterfind list SESSION VOLUME SESSION TIME --------------------------------------------------------------------------- ss2 slave 2015-06-27 00:08:39 so2 ozone 2015-07-04 18:18:32 ss1 slave 2015-06-27 00:25:26 so1 ozone 2015-07-04 18:18:23 [root@dhcp43-93 ~]# glusterfind create so3 ozone Session so3 created with volume ozone [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# # after creating test1, test2, dir1/, dir2/, dir2/dir22/, dir2/dir22/dir23/, dir2/dir22/dir23/dir245/ and renaming dir2/dir22/dir23/dir245/ -> dir2/dir22/dir23/dir24/ [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind pre so1 ozone /tmp/out.txt Generated output file /tmp/out.txt [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# vi /tmp/out.txt [root@dhcp43-93 ~]# cat /tmp/out.txt MODIFY .trashcan%2F NEW test1 NEW test2 NEW dir1 NEW dir2 NEW dir2%2F%2Fdir22 NEW dir2%2Fdir22%2F%2Fdir23 NEW dir2%2Fdir22%2Fdir23%2F%2Fdir24 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# # after executing mv dir2/dir22/dir23/ dir1/ [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind post so1 ozone Session so1 with volume ozone updated [root@dhcp43-93 ~]# glusterfind pre so1 ozone /tmp/out.txt Generated output file /tmp/out.txt [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# vi /tmp/out.txt [root@dhcp43-93 ~]# cat /tmp/out.txt RENAME dir2%2Fdir22%2F%2Fdir23 dir1%2F%2Fdir23 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind post so1 ozone Session so1 with volume ozone updated [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind pre so2 ozone /tmp/out2.txt Generated output file /tmp/out2.txt [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# cat /tmp/out2.txt MODIFY .trashcan%2F NEW test1 NEW test2 NEW dir1 NEW dir2 NEW dir2%2F%2Fdir22 NEW dir1%2F%2Fdir23 NEW dir1%2Fdir23%2F%2Fdir24 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# # after creating : dir1/dir23/a, dir2/a, and mv dir1/dir23/ ./dir23_new [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind post so1 ozone Pre script is not run [root@dhcp43-93 ~]# glusterfind pre so1 ozone /tmp/out.txt Generated output file /tmp/out.txt [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# cat /tmp/out.txt NEW dir23_new%2F%2Fa NEW dir2%2F%2Fa RENAME dir1%2F%2Fdir23 dir23_new [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# # after doing: mv dir23_new/dir24/ dir2/dir22/, touch dir2/dir22/dir24/file1, mv dir2/dir22/dir24/file1 dir23_new/file1_new [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind post so1 ozoen Session so1 not created with volume ozoen [root@dhcp43-93 ~]# glusterfind post so1 ozone Session so1 with volume ozone updated [root@dhcp43-93 ~]# glusterfind pre so1 ozone /tmp/out.txt Generated output file /tmp/out.txt [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# cat /tmp/out.txt RENAME dir23_new%2F%2Fdir24 dir2%2Fdir22%2F%2Fdir24 NEW dir23_new%2F%2Ffile1_new [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind post so1 ozone Session so1 with volume ozone updated [root@dhcp43-93 ~]# glusterfind pre so2 ozone /tmp/out2.txt Post command is not run after last pre, use --regenerate-outfile [root@dhcp43-93 ~]# glusterfind post so2 ozone Session so2 with volume ozone updated [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# glusterfind pre so2 ozone /tmp/out2.txt Generated output file /tmp/out2.txt [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# cat /tmp/out2.txt NEW dir23_new%2F%2Fa NEW dir2%2F%2Fa RENAME dir1%2F%2Fdir23 dir23_new RENAME dir23_new%2F%2Fdir24 dir2%2Fdir22%2F%2Fdir24 NEW dir23_new%2F%2Ffile1_new [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# rpm -qa | grep glusterfs glusterfs-client-xlators-3.7.1-7.el6rhs.x86_64 glusterfs-server-3.7.1-7.el6rhs.x86_64 glusterfs-3.7.1-7.el6rhs.x86_64 glusterfs-api-3.7.1-7.el6rhs.x86_64 glusterfs-cli-3.7.1-7.el6rhs.x86_64 glusterfs-geo-replication-3.7.1-7.el6rhs.x86_64 glusterfs-libs-3.7.1-7.el6rhs.x86_64 glusterfs-fuse-3.7.1-7.el6rhs.x86_64 [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# [root@dhcp43-93 ~]# rpm -qa | grep glusterfs glusterfs-client-xlators-3.7.1-7.el6rhs.x86_64 glusterfs-server-3.7.1-7.el6rhs.x86_64 glusterfs-3.7.1-7.el6rhs.x86_64 glusterfs-api-3.7.1-7.el6rhs.x86_64 glusterfs-cli-3.7.1-7.el6rhs.x86_64 glusterfs-geo-replication-3.7.1-7.el6rhs.x86_64 glusterfs-libs-3.7.1-7.el6rhs.x86_64 glusterfs-fuse-3.7.1-7.el6rhs.x86_64 [root@dhcp43-93 ~]# gluster peer status Number of Peers: 1 Hostname: 10.70.43.155 Uuid: 97f53dc5-1ba1-45dc-acdd-ddf38229035b State: Peer in Cluster (Connected) [root@dhcp43-93 ~]# CLIENT ========= [root@dhcp43-59 ~]# mkdir /mnt/oz [root@dhcp43-59 ~]# mount -t glusterfs 10.70.43.93:/ozone /mnt/oz [root@dhcp43-59 ~]# cd /mnt/oz [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# ls -a . .. .trashcan [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# echo "what a beautiful day" > test1 [root@dhcp43-59 oz]# echo "hello world" > test2 [root@dhcp43-59 oz]# l s-a -bash: l: command not found [root@dhcp43-59 oz]# ls -a . .. test1 test2 .trashcan [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# mkdir dir1 [root@dhcp43-59 oz]# mkdir -p dir2/dir22/dir23/dir245 [root@dhcp43-59 oz]# mv dir2/dir22/dir23/dir245 dir2/dir22/dir23/dir24 [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# mv dir2/dir22/dir23/ dir1/ [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# cd dir1/dir23/dir24/^C [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# pwd /mnt/oz [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# ls dir1 dir2 test1 test2 [root@dhcp43-59 oz]# ls -lrt total 3 -rw-r--r--. 1 root root 21 Jul 4 18:23 test1 -rw-r--r--. 1 root root 12 Jul 4 18:24 test2 drwxr-xr-x. 3 root root 36 Jul 4 18:24 dir2 drwxr-xr-x. 3 root root 36 Jul 4 18:26 dir1 [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# ls -lrt dir1/dir23/dir24/ total 0 [root@dhcp43-59 oz]# ls -lrt dir2/dir22/ total 0 [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# touch dir1/dir23/a [root@dhcp43-59 oz]# touch dir2/a [root@dhcp43-59 oz]# mv dir1/dir23/ ./dir23_new [root@dhcp43-59 oz]# ls -a . .. dir1 dir2 dir23_new test1 test2 .trashcan [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# ls -lrt dir23_new/ a dir24/ [root@dhcp43-59 oz]# ls -lrt dir23_new/dir24/ total 0 [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# ls -la total 10 drwxr-xr-x. 7 root root 178 Jul 4 18:29 . drwxr-xr-x. 12 root root 4096 Jul 4 18:18 .. drwxr-xr-x. 2 root root 12 Jul 4 18:29 dir1 drwxr-xr-x. 3 root root 44 Jul 4 18:29 dir2 drwxr-xr-x. 3 root root 44 Jul 4 18:29 dir23_new -rw-r--r--. 1 root root 21 Jul 4 18:23 test1 -rw-r--r--. 1 root root 12 Jul 4 18:24 test2 drwxr-xr-x. 3 root root 48 Jul 4 18:17 .trashcan [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# touch dir2 dir2/ dir23_new/ [root@dhcp43-59 oz]# mv dir23_new/ a dir24/ [root@dhcp43-59 oz]# mv dir23_new/dir24/ dir2 dir2/ dir23_new/ [root@dhcp43-59 oz]# mv dir23_new/dir24/ dir2/ a dir22/ [root@dhcp43-59 oz]# mv dir23_new/dir24/ dir2/dir22/ [root@dhcp43-59 oz]# touch dir2/dir22/dir24/file1 [root@dhcp43-59 oz]# mv dir2/dir22/dir24/file1 dir23_new/file1_new [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# ls -lr dir23_new/ total 0 -rw-r--r--. 1 root root 0 Jul 4 18:33 file1_new -rw-r--r--. 1 root root 0 Jul 4 18:29 a [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# [root@dhcp43-59 oz]# rpm -qa | grep gluster glusterfs-libs-3.7.1-3.el6.x86_64 glusterfs-client-xlators-3.7.1-3.el6.x86_64 glusterfs-fuse-3.7.1-3.el6.x86_64 glusterfs-3.7.1-3.el6.x86_64 [root@dhcp43-59 oz]#
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://rhn.redhat.com/errata/RHSA-2015-1495.html