Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problems with path that has non-URL characters in it #22

Closed
cesmarvin opened this issue May 27, 2011 · 11 comments
Closed

Problems with path that has non-URL characters in it #22

cesmarvin opened this issue May 27, 2011 · 11 comments
Labels
bug Something isn't working

Comments

@cesmarvin
Copy link
Contributor

Original report by Anonymous.


Whenever you have a path that contains characters that will be URL encoded the server throws a "Path not Found" 500 error. It seems that the path resolver does not decode the URL and uses it as-it-is.

We are running SCM-Manager at a Tomcat 6.0.30.

Stacktrace:

message org.tmatesoft.svn.core.SVNException: svn: Path '/Seminar%20Algorithm%20Engineering' you requested not found at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) at org.tmatesoft.svn.core.internal.server.dav.handlers.DAVGetHandler.execute(DAVGetHandler.java:52) at org.tmatesoft.svn.core.internal.server.dav.DAVServlet.service(DAVServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:141) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:63) at sonia.scm.web.filter.PermissionFilter.doFilter(PermissionFilter.java:148) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.web.filter.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:143) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.filter.SSLFilter.doFilter(SSLFilter.java:93) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) at sonia.scm.boot.BootstrapFilter.doFilter(BootstrapFilter.java:104) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662)

description The requested resource (org.tmatesoft.svn.core.SVNException: svn: Path '/Seminar%20Algorithm%20Engineering' you requested not found at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) at org.tmatesoft.svn.core.internal.server.dav.handlers.DAVGetHandler.execute(DAVGetHandler.java:52) at org.tmatesoft.svn.core.internal.server.dav.DAVServlet.service(DAVServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:141) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:63) at sonia.scm.web.filter.PermissionFilter.doFilter(PermissionFilter.java:148) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.web.filter.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:143) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.filter.SSLFilter.doFilter(SSLFilter.java:93) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) at sonia.scm.boot.BootstrapFilter.doFilter(BootstrapFilter.java:104) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) ) is not available.

@cesmarvin
Copy link
Contributor Author

Original comment by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).


Is "/Seminar%20Algorithm%20Engineering" the name of the repository or is it a path in the repositoriy?

@cesmarvin
Copy link
Contributor Author

Original comment by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).


It is possible that you create an bitbucket account? because the notification system of bitbucket does not notify on anonymous comments.

@cesmarvin
Copy link
Contributor Author

Original comment by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).


possible fix <<changeset 8315b6e2dc7f>>

could you please test this version:

http://download.scm-manager.org/issues/22/scm-webapp-1.3-SNAPSHOT.war

@cesmarvin
Copy link
Contributor Author

Original comment by Stefan Bechtold (Bitbucket: sbechtold, GitHub: sbechtold).


Thanks for that quick fix. I will test it right away and get back to you after testing.

Just to answer your question from comment #1, it's not the repository's name but the name of a folder within the repository. I think it's no problem to avoid spaces and special characters within the repository's name but it is kind of impossible to tell all your users not to commit resources that have special chars in their names (which then will crash the repository). So let's see if your fix resolves that issue. :-)

@cesmarvin
Copy link
Contributor Author

Original comment by Stefan Bechtold (Bitbucket: sbechtold, GitHub: sbechtold).


The fix from comment #4 solves the issue. :-)
Great work!!!

PS: I'm not sure about how you like to handle issue states, therefore, I have not changed the state to resolved.

@cesmarvin
Copy link
Contributor Author

Original comment by Stefan Bechtold (Bitbucket: sbechtold, GitHub: sbechtold).


Sorry that I come back to you again: It seems that there is still a problem when using eclipse (or Cornerstone on my Mac) to access the repository. I checked it from within the browser and that worked out very well.

In the logfile of my eclipse workspace I found the following exception:

!ENTRY org.eclipse.team.svn.core.svnnature 4 0 2011-05-28 19:12:43.094
!MESSAGE SVN: '0x00000230: Get Repository Folder Children' operation finished with error
!SUBENTRY 1 org.eclipse.team.svn.core.svnnature 4 0 2011-05-28 19:12:43.094
!MESSAGE Get repository folder children operation failed.
!STACK 0
org.eclipse.team.svn.core.connector.SVNConnectorException: svn: For input string: ""
	at org.polarion.team.svn.connector.svnkit.SVNKitConnector.handleClientException(SVNKitConnector.java:1424)
	at org.polarion.team.svn.connector.svnkit.SVNKitConnector.list(SVNKitConnector.java:1274)
	at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.list(ThreadNameModifier.java:278)
	at org.eclipse.team.svn.core.utility.SVNUtility.list(SVNUtility.java:335)
	at org.eclipse.team.svn.core.svnstorage.SVNRepositoryContainer.getChildren(SVNRepositoryContainer.java:79)
	at org.eclipse.team.svn.core.operation.remote.GetRemoteFolderChildrenOperation.runImpl(GetRemoteFolderChildrenOperation.java:76)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
	at org.eclipse.team.svn.core.operation.CompositeOperation.runImpl(CompositeOperation.java:95)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
	at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
	at org.eclipse.team.svn.ui.utility.DefaultCancellableOperationWrapper.run(DefaultCancellableOperationWrapper.java:55)
	at org.eclipse.team.svn.ui.utility.ScheduledOperationWrapper.run(ScheduledOperationWrapper.java:37)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.tigris.subversion.javahl.ClientException: svn: For input string: ""
	at org.tigris.subversion.javahl.JavaHLObjectFactory.throwException(JavaHLObjectFactory.java:778)
	at org.tmatesoft.svn.core.javahl.SVNClientImpl.throwException(SVNClientImpl.java:1924)
	at org.tmatesoft.svn.core.javahl.SVNClientImpl.list(SVNClientImpl.java:365)
	at org.tmatesoft.svn.core.javahl.SVNClientImpl.list(SVNClientImpl.java:337)
	at org.polarion.team.svn.connector.svnkit.SVNKitConnector.list(SVNKitConnector.java:1263)
	... 14 more
Caused by: org.tmatesoft.svn.core.SVNException: svn: For input string: ""
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getDir(DAVRepository.java:373)
	at org.tmatesoft.svn.core.io.SVNRepository.getDir(SVNRepository.java:1309)
	at org.tmatesoft.svn.core.wc.SVNLogClient.list(SVNLogClient.java:1373)
	at org.tmatesoft.svn.core.wc.SVNLogClient.doList(SVNLogClient.java:1364)
	at org.tmatesoft.svn.core.wc.SVNLogClient.doList(SVNLogClient.java:1213)
	at org.tmatesoft.svn.core.javahl.SVNClientImpl.list(SVNClientImpl.java:350)
	... 16 more
Caused by: java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Long.parseLong(Long.java:431)
	at java.lang.Long.parseLong(Long.java:468)
	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getDir(DAVRepository.java:371)
	... 21 more

The exception occurs whenever I use the SVN Repository Browser and open the first level of the repository. I'm not quite sure if this issue is still related with the SCM-Manager but I do not run into this problem if I configure my server's apache to serve the SVN repository via DAV. So it feels as if there still is a little issue within the service. :-(

@cesmarvin
Copy link
Contributor Author

Original comment by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).


possible fix <>

could you please test this version:

http://download.scm-manager.org/issues/22/scm-webapp-1.3.20110529.war

@cesmarvin
Copy link
Contributor Author

Original comment by Stefan Bechtold (Bitbucket: sbechtold, GitHub: sbechtold).


I tested the fix but it still does not work. Steps to reproduce:

  • Install the version on a tomcat server.
  • Create a SVN repository called "test".
  • Give your user OWNER rights to the repository.
  • Use eclipse with Subversive to connect to: http://://svn/test/

It seems that there is no information about the requested resource (which is "") and therefor the method getDir from DAVRepository throws a NumberFormatException during parsing a Long value instead of ignoring the resource or setting its value to -1 or 0.

I will be traveling around for the next weeks but a friend of mine will continue to support you with testing.

@cesmarvin
Copy link
Contributor Author

Original comment by Stefan Bechtold (Bitbucket: sbechtold, GitHub: sbechtold).


We might claim this exception as a new bug as it does not seem to be related to the path resolving issue. Additionally, I have created a temp. public SVN repository which you also can use for reproducing the bug.

http://scm.outofthebag.de/repos/svn/test

@cesmarvin
Copy link
Contributor Author

Original comment by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).


Yes, i think a new issue is a good idea. Thanks for the repository i will test.

@cesmarvin
Copy link
Contributor Author

Original comment by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).


Could you please create a new ticket, with a detailed description.

@cesmarvin cesmarvin added major bug Something isn't working labels Mar 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant