GlusterFS & Mercurial don’t like each other

mercurial

I did setup GlusterFS but when I mounted the directory on the client and did hg clone myrepo myrepo in that mounted directory, it's giving the following error:

requesting all changes
adding changesets
transaction abort!
rollback completed
abort: integrity check failed on 00changelog.i:6!
  1. When I go to a none Glusterfs directory then clone, hg works fine.
  2. I checked out the code to a different directory then moved it to the mounted GlusterFS directory and it works fine.

So it must be that either Mercurial or GlusterFS has a bug but don't know if there is an alternative. Else I will have to use rsync from non mounted directory. Any idea what's going on here?

Versions

GlusterFS 3.2.6
Mercurial 2.1.1

Best Answer

It looks like this bug: Direct io-mode support and related changes in caching translators, described in Write-behind breaks Mercurial. The bug will be fixed in GlusterFS 3.4.0 (I don't know if is fixed in 3.3, anyway try the beta), according to the Bugzilla entry.

As a workaround, is suggested to disable write-behind: gluster volume set conf performance.write-behind off.

Related Question