On Wed, Mar 2, 2016 at 8:14 PM, Bert Huijben <b...@qqmail.nl> wrote: > > >> -----Original Message----- >> From: Branko Čibej [mailto:br...@apache.org] >> Sent: woensdag 2 maart 2016 19:08 >> To: dev@subversion.apache.org >> Subject: Re: Incomplete xml output when using --xml to non-existent server >> >> On 02.03.2016 15:05, Johan Corveleyn wrote: >> > Hi all, >> > >> > A colleague of mine ran into this, and I'm wondering if it's expected >> > behavior or a bug: >> > >> > For certain commands with the --xml option, the xml output is >> > incomplete when sending the request to a non-existent server. This can >> > cause an issue for tools that try to parse the output into some data >> > structure, and expect correct XML (even though the command has exited >> > with an error). >> > >> > For instance, 'svn info' and 'svn ls' behave thusly (maybe other >> > commands as well): >> > >> > [[[ >> > C:\>svn info --xml https://nonexistent/svn >> > <?xml version="1.0" encoding="UTF-8"?> >> > <info> >> > svn: E170013: Unable to connect to a repository at URL >> 'https://nonexistent/svn' >> > svn: E731001: No such host is known. >> > >> > C:\>svn ls --xml https://nonexistent/svn >> > <?xml version="1.0" encoding="UTF-8"?> >> > <lists> >> > <list >> > path="https://nonexistent/svn"> >> > svn: E170013: Unable to connect to a repository at URL >> 'https://nonexistent/svn' >> > svn: E731001: No such host is known. >> > ]]] >> > >> > (The 'svn: Exxx' warnings are printed to stderr, while the incomplete >> > xml output is printed to stdout) >> >> This is clearly a bug; stdout should be either empty, or valid XML. >> >> In this case I suspect that we're printing the generic XML header too soon. > > We produce the output streamingly... would you suggest that we now buffer all > output before producing the first result? (Potentially many hundreds of MB on > recursive operations, so that would have to be a disk backed buffer when the > amount of data gets huge) > > I think I asked the same question somewhere before 1.5, and the answer then > was +- as I answered now... This is not really fixable in a backwards > compatible way as there is no way to express errors in the schema. (How do we > express an error to access a file somewhere deep inside a tree? That would > make the entire tree invalid as expressed in todays schema) >
Bert, Note that a failure to access a file / directory does *not* give this problem. This incomplete xml only happens when there is a problem accessing the *server* ("nonexistent" in my example). As I said in the second part of my mail: > Contrast this with another failing request, when accessing a > *non-existent directory* on an existing server: > > [[[ > C:\>svn info --xml https://realserver/svn/asdf > <?xml version="1.0" encoding="UTF-8"?> > <info> > svn: warning: W170000: URL 'https://realserver/svn/asdf' non-existent > in revision 316895 > > </info> > svn: E200009: Could not display info for all targets because some > targets don't exist > > C:\>svn ls --xml https://realserver/svn/asdf > <?xml version="1.0" encoding="UTF-8"?> > <lists> > <list > path="https://realserver/svn/asdf"> > svn: warning: W160013: URL 'https://realserver/svn/asdf' non-existent > in revision 316895 > </list> > </lists> > svn: E200009: Could not list all targets because some targets don't exist > ]]] Accessing a non-existent directory on an existing server does yield correct xml. -- Johan