On Sat, Apr 10, 2010 at 5:11 PM, Stephen Butler <sbut...@elego.de> wrote: > Hi folks, > > This email was filed as issue 3532 "svn update' via ra_serf of locked > file in locally deleted dir triggers assert and breaks WC". (I've been > looking into 3525 "Locked file which is scheduled for delete causes > tree conflict".) > > OMM (svn-trunk, serf-0.3.1, on OS X 10.6.3) the test mentioned > below, update_tests.py 57, fails normally without raising the > assertion.
Hi Stephen, Are you sure it is failing "normally"? Could you post your test run output for both ra_neon and ra_serf? I don't get the assert anymore, but the test fails in a different way with ra_serf vs. ra_neon (see attachments). Also, the WC in the ra_serf test is still broken once the test completes. This time however, svn cleanup doesn't assert, but gives this error: C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\working_copies\update_tests-57>svn st ! L . ! L A ..\..\..\subversion\svn\status-cmd.c:289: (apr_err=155037) ..\..\..\subversion\svn\util.c:960: (apr_err=155037) ..\..\..\subversion\libsvn_client\status.c:491: (apr_err=155037) ..\..\..\subversion\libsvn_wc\status.c:2298: (apr_err=155037) ..\..\..\subversion\libsvn_wc\status.c:1116: (apr_err=155037) ..\..\..\subversion\libsvn_wc\status.c:847: (apr_err=155037) ..\..\..\subversion\libsvn_wc\status.c:1095: (apr_err=155037) ..\..\..\subversion\libsvn_wc\entries.c:1306: (apr_err=155037) ..\..\..\subversion\libsvn_wc\entries.c:627: (apr_err=155037) ..\..\..\subversion\libsvn_wc\entries.c:627: (apr_err=155037) ..\..\..\subversion\libsvn_wc\wc_db.c:6182: (apr_err=155037) ..\..\..\subversion\libsvn_wc\wc_db.c:1077: (apr_err=155037) ..\..\..\subversion\libsvn_wc\wc_db.c:443: (apr_err=155037) ..\..\..\subversion\libsvn_wc\wc_db.c:341: (apr_err=155037) svn: Previous operation was interrupted; run 'svn cleanup' C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\working_copies\update_tests-57>svn cleanup ..\..\..\subversion\svn\cleanup-cmd.c:67: (apr_err=720002) ..\..\..\subversion\libsvn_client\cleanup.c:58: (apr_err=720002) ..\..\..\subversion\libsvn_wc\log.c:1209: (apr_err=720002) ..\..\..\subversion\libsvn_wc\log.c:1170: (apr_err=720002) ..\..\..\subversion\libsvn_wc\log.c:1170: (apr_err=720002) ..\..\..\subversion\libsvn_wc\log.c:1170: (apr_err=720002) ..\..\..\subversion\libsvn_wc\log.c:1146: (apr_err=720002) ..\..\..\subversion\libsvn_wc\workqueue.c:2294: (apr_err=720002) ..\..\..\subversion\libsvn_wc\workqueue.c:89: (apr_err=720002) ..\..\..\subversion\libsvn_wc\workqueue.c:89: (apr_err=720002) ..\..\..\subversion\libsvn_subr\io.c:1508: (apr_err=720002) svn: Can't set file 'C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\working_copies\update_tests-57\A\B\E\alpha' read-write: The system cannot find the file specified. Paul > Can anyone still reproduce this issue? > > Thanks, > Steve > > Begin forwarded message: > >> From: Paul Burba <ptbu...@gmail.com> >> Date: November 6, 2009 14:45:12 GMT >> To: d...@subversion.tigris.org >> Cc: Bert Huijben <rhuij...@sharpsvn.net> >> Subject: Re: svn commit: r38105 - trunk/subversion/libsvn_ra_serf >> >> On Fri, Jun 19, 2009 at 3:08 PM, Bert Huijben <rhuij...@sharpsvn.net> wrote: >>> Author: rhuijben >>> Date: Fri Jun 19 13:08:39 2009 >>> New Revision: 38105 >>> >>> Log: >>> Make all response handlers in svn_ra_serf return svn_error_t* for >>> a much cleaner error handling. This fixes issue #3375, but some further >>> refactoring would be welcome. >>> >>> * subversion/libsvn_ra_serf/commit.c >>> (handle_checkout): Updated for new handler prototype and replace abort() >>> with normal SVN_ERR_MALFUNCTION() >>> (post_response_handler): Updated for changed prototype. >>> >>> * subversion/libsvn_ra_serf/locks.c >>> (handle_lock): Updated for new prototype. Return errors where possible. >>> >>> * subversion/libsvn_ra_serf/options.c >>> (options_response_handler): Updated for new prototype. >>> >>> * subversion/libsvn_ra_serf/ra_serf.h >>> (svn_ra_serf__response_handler_t): Updated to return svn_error_t * and >>> remove the temporary session argument. >>> (svn_ra_serf__handle_status_only, svn_ra_serf__handle_discard_body, >>> svn_ra_serf__handle_server_error, svn_ra_serf__handle_multistatus_only, >>> svn_ra_serf__handle_xml_parser): Updated to follow new prototype. >>> (SVN_SESSION_ERR): Removed macro. >>> >>> * subversion/libsvn_ra_serf/update.c >>> (error_fetch): Return svn_error_t * >>> (handle_fetch, handle_stream): Update error handling for new prototype. >>> >>> * subversion/libsvn_ra_serf/util.c >>> (svn_ra_serf__handle_discard_body, >>> svn_ra_serf__handle_status_only, >>> svn_ra_serf__handle_multistatus_only): >>> Implement new prototype. >>> (svn_ra_serf__handle_xml_parser): >>> Implement new prototype. Return errors instead of adding them to >>> the session. And remove an obsolete test. >>> (svn_ra_serf__handle_server_error): >>> Updated for new prototype. Clear ignored errors. >>> (handle_response): >>> Use apr_status_t handler for discarding data, clear ignored >>> authentication errors. Compose session errors instead of overwriting >>> existing values. Add specific handling for serfs error handling. >>> >>> Modified: >>> trunk/subversion/libsvn_ra_serf/commit.c >>> trunk/subversion/libsvn_ra_serf/locks.c >>> trunk/subversion/libsvn_ra_serf/options.c >>> trunk/subversion/libsvn_ra_serf/ra_serf.h >>> trunk/subversion/libsvn_ra_serf/update.c >>> trunk/subversion/libsvn_ra_serf/util.c >> >> Hi Bert, >> >> Just an fyi: >> >> In addition to the error handling problem I already fixed in r40377, >> is seems this change is also responsible for triggering an assert in >> update_tests.py 57 'verify update of deleted locked files'. This test >> was not added until after your change, but on a hunch I checked if the >> test would pass with ra_serf back to r38104. It does, and then fails >> with the introduction of r38105. >> >> The test is marked as XFail so assert has gone unnoticed. I've >> attached the test run output for the test using ra_neon, where it >> fails "as expected" and from ra_serf where the assert occurs. >> >> This assert can quickly be replicated from the command line by locking >> a file, deleting the files containing directory and the updating. >> >> I haven't yet been able to figure out what abour r38105 is causing >> this. I'm out of the office today and will look at it more on Monday, >> but in the meantime if you have anything to add... >> >> Thanks, >> >> Paul >> >> >> Paul >> >> ------------------------------------------------------ >> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2415110 > > Stephen Butler | Software Developer > elego Software Solutions GmbH > Gustav-Meyer-Allee 25 | 13355 Berlin | Germany > fon: +49 30 2345 8696 | mobile: +49 163 25 45 015 > fax: +49 30 2345 8695 | http://www.elegosoft.com > Geschäftsführer: Olaf Wagner | Sitz der Gesellschaft: Berlin > Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194 > > > >
C:\SVN\src-trunk-2>run.python.test.RELEASE.bat update 57 -v --cleanup --url http://localhost --http-library neon C:\SVN\src-trunk-2>SET TESTNAME=update C:\SVN\src-trunk-2>set CONFIG=Release C:\SVN\src-trunk-2>if not exist Release\subversion\tests\cmdline mkdir Release\subversion\tests\cmdline C:\SVN\src-trunk-2>pushd Release\subversion\tests\cmdline C:\SVN\src-trunk-2\Release\subversion\tests\cmdline>python C:\SVN\src-trunk-2\\subversion\tests\cmdline\update_tests.py 57 -v --cleanup --url http://localhost - -http-library neon CMD: svnadmin.exe create "svn-test-work\local_tmp\repos" --bdb-txn-nosync <TIME = 0.531000> CMD: svn.exe import -m "Log message for revision 1." "svn-test-work\local_tmp\greekfiles" http://localhost/svn-test-work/local_tmp/repos --config-dir "C:\SVN\sr c-trunk-2\Release\subversion\tests\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.797000> Adding svn-test-work\local_tmp\greekfiles\A Adding svn-test-work\local_tmp\greekfiles\A\B Adding svn-test-work\local_tmp\greekfiles\A\B\lambda Adding svn-test-work\local_tmp\greekfiles\A\B\E Adding svn-test-work\local_tmp\greekfiles\A\B\E\alpha Adding svn-test-work\local_tmp\greekfiles\A\B\E\beta Adding svn-test-work\local_tmp\greekfiles\A\B\F Adding svn-test-work\local_tmp\greekfiles\A\mu Adding svn-test-work\local_tmp\greekfiles\A\C Adding svn-test-work\local_tmp\greekfiles\A\D Adding svn-test-work\local_tmp\greekfiles\A\D\gamma Adding svn-test-work\local_tmp\greekfiles\A\D\G Adding svn-test-work\local_tmp\greekfiles\A\D\G\pi Adding svn-test-work\local_tmp\greekfiles\A\D\G\rho Adding svn-test-work\local_tmp\greekfiles\A\D\G\tau Adding svn-test-work\local_tmp\greekfiles\A\D\H Adding svn-test-work\local_tmp\greekfiles\A\D\H\chi Adding svn-test-work\local_tmp\greekfiles\A\D\H\omega Adding svn-test-work\local_tmp\greekfiles\A\D\H\psi Adding svn-test-work\local_tmp\greekfiles\iota Committed revision 1. CMD: svnadmin.exe create "svn-test-work\repositories\update_tests-57" --bdb-txn-nosync <TIME = 0.203000> CMD: svnadmin.exe dump svn-test-work\local_tmp\repos | svnadmin.exe load svn-test-work\repositories\update_tests-57 --ignore-uuid <TIME = 0.015000> CMD: svn.exe co http://localhost/svn-test-work/repositories/update_tests-57 "svn-test-work\working_copies\update_tests-57" --config-dir "C:\SVN\src-trunk-2\Rele ase\subversion\tests\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 1.250000> A svn-test-work\working_copies\update_tests-57\A A svn-test-work\working_copies\update_tests-57\A\B A svn-test-work\working_copies\update_tests-57\A\B\lambda A svn-test-work\working_copies\update_tests-57\A\B\E A svn-test-work\working_copies\update_tests-57\A\B\E\alpha A svn-test-work\working_copies\update_tests-57\A\B\E\beta A svn-test-work\working_copies\update_tests-57\A\B\F A svn-test-work\working_copies\update_tests-57\A\mu A svn-test-work\working_copies\update_tests-57\A\C A svn-test-work\working_copies\update_tests-57\A\D A svn-test-work\working_copies\update_tests-57\A\D\gamma A svn-test-work\working_copies\update_tests-57\A\D\G A svn-test-work\working_copies\update_tests-57\A\D\G\pi A svn-test-work\working_copies\update_tests-57\A\D\G\rho A svn-test-work\working_copies\update_tests-57\A\D\G\tau A svn-test-work\working_copies\update_tests-57\A\D\H A svn-test-work\working_copies\update_tests-57\A\D\H\chi A svn-test-work\working_copies\update_tests-57\A\D\H\omega A svn-test-work\working_copies\update_tests-57\A\D\H\psi A svn-test-work\working_copies\update_tests-57\iota Checked out revision 1. CMD: svn.exe lock "svn-test-work\working_copies\update_tests-57\A\B\E\alpha" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\loc al_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.172000> 'alpha' locked by user 'jrandom'. CMD: svn.exe delete "svn-test-work\working_copies\update_tests-57\A\B\E" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\local_t mp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.110000> D svn-test-work\working_copies\update_tests-57\A\B\E\alpha D svn-test-work\working_copies\update_tests-57\A\B\E\beta D svn-test-work\working_copies\update_tests-57\A\B\E CMD: svn.exe up "svn-test-work\working_copies\update_tests-57" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.187000> C svn-test-work\working_copies\update_tests-57\A\B\E D svn-test-work\working_copies\update_tests-57\A\B\E\alpha Updated to revision 1. Summary of conflicts: Tree conflicts: 1 ============================================================= Expected '__SVN_ROOT_NODE' and actual '__SVN_ROOT_NODE' in output tree are different! ============================================================= EXPECTED NODE TO BE: ============================================================= * Node name: __SVN_ROOT_NODE Path: __SVN_ROOT_NODE Contents: None Properties: {} Attributes: {} Children: None (node is probably a file) ============================================================= ACTUAL NODE FOUND: ============================================================= * Node name: __SVN_ROOT_NODE Path: __SVN_ROOT_NODE Contents: N/A (node is a directory) Properties: {} Attributes: {} Children: 1 Unequal Types: one Node is a file, the other is a directory ACTUAL OUTPUT TREE: svntest.wc.State(wc_dir, { 'A\B\E' : Item(status=' ', treeconflict='C'), 'A\B\E\alpha' : Item(status='D '), })EXCEPTION: SVNTreeUnequal Traceback (most recent call last): File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\main.py", line 1219, in run rc = self.pred.run(sandbox) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\testcase.py", line 100, in run return self._delegate.run(sandbox) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\testcase.py", line 160, in run return self.func(sandbox) File "C:\SVN\src-trunk-2\\subversion\tests\cmdline\update_tests.py", line 5342, in update_deleted_locked_files expected_status) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\actions.py", line 727, in run_and_verify_update check_props) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\actions.py", line 616, in verify_update tree.compare_trees("output", actual_output, output_tree) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\tree.py", line 685, in compare_trees raise SVNTreeUnequal SVNTreeUnequal XFAIL: update_tests.py 57: verify update of deleted locked files CLEANUP: svn-test-work\working_copies\update_tests-57 CLEANUP: svn-test-work\repositories\update_tests-57 C:\SVN\src-trunk-2\Release\subversion\tests\cmdline>popd
C:\SVN\src-trunk-2>run.python.test.RELEASE.bat update 57 -v --cleanup --url http://localhost --http-library serf C:\SVN\src-trunk-2>SET TESTNAME=update C:\SVN\src-trunk-2>set CONFIG=Release C:\SVN\src-trunk-2>if not exist Release\subversion\tests\cmdline mkdir Release\subversion\tests\cmdline C:\SVN\src-trunk-2>pushd Release\subversion\tests\cmdline C:\SVN\src-trunk-2\Release\subversion\tests\cmdline>python C:\SVN\src-trunk-2\\subversion\tests\cmdline\update_tests.py 57 -v --cleanup --url http://localhost - -http-library serf CMD: svnadmin.exe create "svn-test-work\local_tmp\repos" --bdb-txn-nosync <TIME = 0.172000> CMD: svn.exe import -m "Log message for revision 1." "svn-test-work\local_tmp\greekfiles" http://localhost/svn-test-work/local_tmp/repos --config-dir "C:\SVN\sr c-trunk-2\Release\subversion\tests\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.454000> Adding svn-test-work\local_tmp\greekfiles\A Adding svn-test-work\local_tmp\greekfiles\A\B Adding svn-test-work\local_tmp\greekfiles\A\B\lambda Adding svn-test-work\local_tmp\greekfiles\A\B\E Adding svn-test-work\local_tmp\greekfiles\A\B\E\alpha Adding svn-test-work\local_tmp\greekfiles\A\B\E\beta Adding svn-test-work\local_tmp\greekfiles\A\B\F Adding svn-test-work\local_tmp\greekfiles\A\mu Adding svn-test-work\local_tmp\greekfiles\A\C Adding svn-test-work\local_tmp\greekfiles\A\D Adding svn-test-work\local_tmp\greekfiles\A\D\gamma Adding svn-test-work\local_tmp\greekfiles\A\D\G Adding svn-test-work\local_tmp\greekfiles\A\D\G\pi Adding svn-test-work\local_tmp\greekfiles\A\D\G\rho Adding svn-test-work\local_tmp\greekfiles\A\D\G\tau Adding svn-test-work\local_tmp\greekfiles\A\D\H Adding svn-test-work\local_tmp\greekfiles\A\D\H\chi Adding svn-test-work\local_tmp\greekfiles\A\D\H\omega Adding svn-test-work\local_tmp\greekfiles\A\D\H\psi Adding svn-test-work\local_tmp\greekfiles\iota Committed revision 1. CMD: svnadmin.exe create "svn-test-work\repositories\update_tests-57" --bdb-txn-nosync <TIME = 0.187000> CMD: svnadmin.exe dump svn-test-work\local_tmp\repos | svnadmin.exe load svn-test-work\repositories\update_tests-57 --ignore-uuid <TIME = 0.016000> CMD: svn.exe co http://localhost/svn-test-work/repositories/update_tests-57 "svn-test-work\working_copies\update_tests-57" --config-dir "C:\SVN\src-trunk-2\Rele ase\subversion\tests\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 1.141000> A svn-test-work\working_copies\update_tests-57\A A svn-test-work\working_copies\update_tests-57\A\B A svn-test-work\working_copies\update_tests-57\A\B\lambda A svn-test-work\working_copies\update_tests-57\A\B\E A svn-test-work\working_copies\update_tests-57\A\B\E\alpha A svn-test-work\working_copies\update_tests-57\A\B\E\beta A svn-test-work\working_copies\update_tests-57\A\mu A svn-test-work\working_copies\update_tests-57\A\D A svn-test-work\working_copies\update_tests-57\A\D\gamma A svn-test-work\working_copies\update_tests-57\A\D\G A svn-test-work\working_copies\update_tests-57\A\D\G\pi A svn-test-work\working_copies\update_tests-57\A\D\G\rho A svn-test-work\working_copies\update_tests-57\A\D\G\tau A svn-test-work\working_copies\update_tests-57\A\D\H A svn-test-work\working_copies\update_tests-57\A\D\H\chi A svn-test-work\working_copies\update_tests-57\A\D\H\omega A svn-test-work\working_copies\update_tests-57\A\D\H\psi A svn-test-work\working_copies\update_tests-57\iota A svn-test-work\working_copies\update_tests-57\A\C A svn-test-work\working_copies\update_tests-57\A\B\F Checked out revision 1. CMD: svn.exe lock "svn-test-work\working_copies\update_tests-57\A\B\E\alpha" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\loc al_tmp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.125000> 'alpha' locked by user 'jrandom'. CMD: svn.exe delete "svn-test-work\working_copies\update_tests-57\A\B\E" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\local_t mp\config" --password rayjandom --no-auth-cache --username jrandom <TIME = 0.078000> D svn-test-work\working_copies\update_tests-57\A\B\E\alpha D svn-test-work\working_copies\update_tests-57\A\B\E\beta D svn-test-work\working_copies\update_tests-57\A\B\E CMD: svn.exe up "svn-test-work\working_copies\update_tests-57" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom CMD: C:\SVN\src-trunk-2\Release\subversion\svn\svn.exe up "svn-test-work\working_copies\update_tests-57" --config-dir "C:\SVN\src-trunk-2\Release\subversion\tes ts\cmdline\svn-test-work\local_tmp\config" --password rayjandom --no-auth-cache --username jrandom exited with 1 <TIME = 0.157000> C svn-test-work\working_copies\update_tests-57\A\B\E D svn-test-work\working_copies\update_tests-57\A\B\E\alpha svn: Can't set file 'C:\SVN\src-trunk-2\Release\subversion\tests\cmdline\svn-test-work\working_copies\update_tests-57\A\B\E\alpha' read-write: The system cannot find the file specified. Traceback (most recent call last): File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\main.py", line 1219, in run rc = self.pred.run(sandbox) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\testcase.py", line 100, in run return self._delegate.run(sandbox) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\testcase.py", line 160, in run return self.func(sandbox) File "C:\SVN\src-trunk-2\\subversion\tests\cmdline\update_tests.py", line 5342, in update_deleted_locked_files expected_status) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\actions.py", line 712, in run_and_verify_update *args) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\main.py", line 605, in run_svn *(_with_auth(_with_config_dir(varargs)))) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\main.py", line 366, in run_command None, *varargs) File "C:\SVN\src-trunk-2\subversion\tests\cmdline\svntest\main.py", line 538, in run_command_stdin raise Failure Failure XFAIL: update_tests.py 57: verify update of deleted locked files CLEANUP: svn-test-work\working_copies\update_tests-57 CLEANUP: svn-test-work\repositories\update_tests-57 C:\SVN\src-trunk-2\Release\subversion\tests\cmdline>popd C:\SVN\src-trunk-2>