Den ons 13 juli 2022 kl 15:35 skrev Klaey Matthias LCPF-CH <
matthias.kl...@mt.com>:

> Hi Nathan,
>
> See my responses further below as [MK 2022-07-13: ].
>
> Not sure whether my email properly has the [In-Reply-To] filled-in to end
> up in https://lists.apache.org/thread/n5vo9kznz9z2gzwy7kym9nj5rl9fw8mw.
> As I am forced to use Outlook, and googling doesn't tell me how to achieve
> [In-Reply-To] in Outlook, I can only hope my response gets there.
>
> Best regards,
> Matthias
>
>
> -----Ursprüngliche Nachricht-----
> Von: Nathan Hartman <hartman.nat...@gmail.com>
> Gesendet: Donnerstag, 7. Juli 2022 16:40
> An: Klaey Matthias LCPF-CH <matthias.kl...@mt.com>
> Cc: users@subversion.apache.org
> Betreff: Re: EXTERNAL - line 10866: assertion failed
> (svn_dirent_is_absolute(local_abspath))
>
> On Wed, Jul 6, 2022 at 10:56 AM Klaey Matthias LCPF-CH <
> matthias.kl...@mt.com> wrote:
> > I encounter the same exception as
> https://lists.apache.org/thread/cxtl57o416ctbbzb315yh6x11kqyn7k3, though
> likely with a different cause. In my case:
>
> (snip)
>
> >
> 'D:\Development\SVN\Releases\TortoiseSVN-1.14.3\ext\subversion\subversion\libsvn_wc\wc_db.c'
> >
> > line 10866: assertion failed (svn_dirent_is_absolute(local_abspath))
>
> We've seen various reports of this exact error on that exact line over the
> years and it would be nice to finally track down the cause(s).
> (One thing that could help is to make SVN report the path in question
> together with the error.)
> [MK 2022-07-13:
> In my case, the path is
> "\\<SomeServer>\<SomeRoot>\<SomeFolderHierarchy>\<MyProject>\Content".]
>
> > Environment:
> >
> > Windows 10 Enterprise 20H2 19042.1706
> > TortoiseSVN 1.14.3, Build 29387 - 64 Bit , 2022/04/08 19:31:22 SVN
> > repo on some enterprise server SVN working copy on a network drive (I
> > know this may sound strange but it’s where the issue happens)
> >
> >
> >
> > Repro steps:
> >
> > [TortoiseSVN > Commit] on a large folder of the working copy, i.e. the
> operation takes several minutes.
> > Undock of the laptop where the operation is taking place, i.e. the
> connection to the network drive temporarily gets lost è exception.
>
> Not sure if I understand correctly, but is the laptop being undocked while
> the commit is in progress? If so, I wouldn't expect anything to work
> correctly due to the disconnection. If it's being undocked after the commit
> is complete, what (if any) other steps do you take that lead to the error?
> [MK 2022-07-13:
> Yes, the laptop accidentally being undocked while the commit is in
> progress. However, as there also is WLAN, the network is only interrupted
> for the short moment to switch from LAN to WLAN. The exception happens when
> undocking, i.e. when loosing LAN connection.
> I understand this is not a typical use case, still I expect TSVN to handle
> such situation and issue a proper error message, rather than crashing.]
>

If I'm reading the code correctly, the path variable is for some reason
incorrect (it is not "absolute", with absolute is defined as starting with
\\ or X:\ (X being a drive letter A-Z), with the \ translated to /
internally in TSVN). I'm guessing that it is empty, since it doesn't make
sense that undocking would just make it loose the \\ or drive letter. I'm
not sure if this path is being supplied directly from TSVN or if it is
constructed within Subversion code, and I'm not sure if some code could be
added to check for an empty path when the network connection is lost.

However fast the network is reconnected there will always be a moment with
no network. The part of the code that assert is the part that is reading
the WC database on the network drive. In this case we are not even
communicating with Subversion code on the other end but we are relying on
Windows to provide us with access to the SQLite database file. So even if
the code would not assert, you might end up with a situation where Windows
is telling SQLite "sorry but that file is not available" (which in turn is
telling Subversion something similar).

Conceivably there could be a "retry" logic that wait for a little while and
retry every operation that could be interrupted but I think that will be a
significant amount of work, and I'm not sure that will even be considered
desirable.

All above being said, please also be aware of what TSVN and SQLite say
about storing WCs on network shares:
* https://tortoisesvn.net/faq.html#wconshare
* https://www.sqlite.org/faq.html#q5

Kind regards,
Daniel Sahlberg

Reply via email to