Patrice Linel
2017-Mar-17 14:56 UTC
[Gluster-users] Extra line of ^@^@^@ at the end of the file
Hi all, When running a program on a distribute volume with sharding, sometimes the files get created with an extra line of special characters ^@^@^@ at the end. This happen under load with multiple nodes access the same folders with job creating files and reading them very shortly on another node (>0.5 sec later). I did an strace and the major difference is an Inappropriate ioctl followed by an lseek like below. When running the same workload on a panfs filesystem , the strace is the same but no extra line get created at the end. Thanks for any advice on further debugging or resolution on this. Patrice. ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 32), ...}) = 0 readlink("/proc/self/fd/1", "/dev/pts/32", 4095) = 11 stat("/dev/pts/32", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 32), ...}) = 0 ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 32), ...}) = 0 ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 write(1, " Done reading parameter file for"..., 57) = 57 VS ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7fffffff6410) = -1 ENOTTY (Inappropriate ioctl for device) ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7fffffffa630) = -1 ENOTTY (Inappropriate ioctl for device) fstat(1, {st_mode=S_IFREG|0664, st_size=22753, ...}) = 0 ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7fffffffa630) = -1 ENOTTY (Inappropriate ioctl for device) write(1, " Done reading parameter file for"..., 57 Done reading parameter file for chromosome 7 ) = 57 lseek(1, 0, SEEK_CUR^@^@^@^@^@^@^@^@^@^@^@^@^@) ________________________________ *** The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copies of it. If you have any questions concerning this message, please contact the sender. ***
Joe Julian
2017-Mar-17 16:43 UTC
[Gluster-users] Extra line of ^@^@^@ at the end of the file
Would have responded on IRC, but you were already gone. This is a twofold bug. One, your application should not be using the invalid flag, "SEEK_CUR^@^@^@^@^@^@^@^@^@^@^@^@^@". Second, you should file this as a bug report for gluster. It should probably fail EINVAL that lseek early. On 03/17/17 07:56, Patrice Linel wrote:> Hi all, > > When running a program on a distribute volume with sharding, sometimes > the files get created with an extra line of special characters ^@^@^@ at > the end. This happen under load with multiple nodes access the same > folders with job creating files and reading them very shortly on another > node (>0.5 sec later). > I did an strace and the major difference is an Inappropriate ioctl > followed by an lseek like below. > > > When running the same workload on a panfs filesystem , the strace is the > same but no extra line get created at the end. > > > Thanks for any advice on further debugging or resolution on this. > > Patrice. > > > ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, > {B38400 opost isig icanon echo ...}) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 32), ...}) = 0 > readlink("/proc/self/fd/1", "/dev/pts/32", 4095) = 11 > stat("/dev/pts/32", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 32), > ...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, > {B38400 opost isig icanon echo ...}) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 32), ...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, > {B38400 opost isig icanon echo ...}) = 0 > write(1, " Done reading parameter file for"..., 57) = 57 > > > VS > > ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, > 0x7fffffff6410) = -1 ENOTTY (Inappropriate ioctl for device) > ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, > 0x7fffffffa630) = -1 ENOTTY (Inappropriate ioctl for device) > fstat(1, {st_mode=S_IFREG|0664, st_size=22753, ...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, > 0x7fffffffa630) = -1 ENOTTY (Inappropriate ioctl for device) > write(1, " Done reading parameter file for"..., 57 Done reading > parameter file for chromosome 7 > ) = 57 > lseek(1, 0, SEEK_CUR^@^@^@^@^@^@^@^@^@^@^@^@^@) > > > ________________________________ > *** The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copies of it. If you have any questions concerning this message, please contact the sender. *** > _______________________________________________ > Gluster-users mailing list > Gluster-users at gluster.org > http://lists.gluster.org/mailman/listinfo/gluster-users