[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-devel] Solaris breakage
From: |
William Uther |
Subject: |
[Monotone-devel] Solaris breakage |
Date: |
Tue, 24 Jul 2007 16:22:02 +1000 |
Hi,
Just taking a break from paper editing... I decided to look at
the solaris breakage. It makes no sense to me at all.
The test that is failing is "clone_warning_with_multiple_heads".
The part of the test that is failing is where the checked out
directory is removed after the failure - the directory is being left
around. In particular, from the buildbot we get:
mtn: setting default server to file:/zfs_space/export/home/mtbldbot/
slave-dir/fu
ll-sparc-solaris10-sunstudio11/build/tester_dir/
clone_warning_with_multiple_head
s/test.db
mtn: setting default branch include pattern to 'testbranch'
mtn: connecting to file:/zfs_space/export/home/mtbldbot/slave-dir/
full-sparc-sol
aris10-sunstudio11/build/tester_dir/clone_warning_with_multiple_heads/
test.db
mtn: finding items to synchronize:
mtn: ticks: >="bytes in"/1024, <="bytes out"/1024, c="certs in"/3,
r="revs in"/1
mtn: ><crrcr>crcc
mtn: successful exchange with file:/zfs_space/export/home/mtbldbot/
slave-dir/ful
l-sparc-solaris10-sunstudio11/build/tester_dir/
clone_warning_with_multiple_heads
/test.db
mtn: branch testbranch has multiple heads:
mtn: 6d0f3f362b7328e94dff9fef549bbdf0095b2cd6 address@hidden
2007-07-24T03:59
:28
mtn: 89103abeb431f83da74d9b1b99a1609c530643e1 address@hidden
2007-07-24T03:59
:26
mtn: choose one with 'mtn checkout -r<id>'
mtn: error: could not remove '/zfs_space/export/home/mtbldbot/slave-
dir/full-spa
rc-solaris10-sunstudio11/build/tester_dir/
clone_warning_with_multiple_heads/test
_dir1': Invalid argument
This is correct down to the last line. The "could not remove" error
comes from clone trying to remove the test_dir1 directory it
partially checked out. This attempted using delete_dir_recursive()
defined around line 280 of file_io.cc. Note that the first thing
that function does is check that the directory to remove both exists
and is actually a directory - i.e. the problem is not with clone
passing in the wrong path.
I have no idea why the recursive remove is failing on Solaris. The
final failure prints out an os_strerror(errno) of "Invalid
argument". We know the file exists. Why else could the argument be
invalid?
I thought this patch might help illuminate things:
--- file_io.cc 358fb964dc42e7f936a136342b93bb3a4744d1b3
+++ file_io.cc d91cbbab9f40622e4c264becb0e2067ee218738e
@@ -269,6 +269,9 @@ do_remove_recursive(any_path const & p)
i != subdirs.end(); i++)
do_remove_recursive(p / *i);
+ if (!directory_empty(p))
+ W(F("When attempting to remove directory '%s', we were
unsuccessful removing all the files inside it.") % p);
+
do_remove(p.as_external());
}
but I'm wary of committing that as it will make failures very verbose
and slow down every recursive remove.
I'm at a loss to suggest why the recursive remove might be failing.
I could imagine the remove of the database inside that dir failing
(which is why the test is marked xfail on windows), but we don't get
an error removing the db, we get an error later removing the top
level dir.
I hope that helps people on Solaris debug. Unfortunately, I don't
have a solaris box easily accessible to help with.
Cheers,
Will :-}
- [Monotone-devel] Solaris breakage,
William Uther <=