sonatype / nexus-ruby-support

26 stars 7 forks source link

gem can not be found but is shown in repository #22

Closed quintonm closed 11 years ago

quintonm commented 11 years ago

I started seeing an odd problem today. I am trying to install a gem which does exist yet it fails saying that there is no gem by that name. It then suggests an alternative name that is the same.

gem install pony ERROR: Could not find a valid gem 'pony' (>= 0) in any repository ERROR: Possible alternatives: pony

It is retrying to install the gem from a proxied repo (rubygems.org). pony-1.4.gem is shown under gems/p. There is also pony-1.4.gemspec.rz under quick/Marshall.4.8/p.

Below is the stack trace from nexus.log

2013-04-24 14:42:26 INFO [p1749751043-246] - org.sonatype.nexus.plugins.ruby.proxy.DefaultRubyProxyRepository - rubygems:/latest_specs.4.8.gz (file) needs remote update: false 2013-04-24 14:42:26 ERROR [p1749751043-256] - org.sonatype.nexus.rest.ContentPlexusResource - Got exception during processing request "GET http://artifacts.dstcorp.net/nexus/content/groups/allgems/quick/Marshal.4.8/pony-1.4.gemspec.rz": java.util.NoSuchElementException: null at java.util.ArrayList$Itr.next(ArrayList.java:794) ~[na:1.7.0_06] at org.apache.http.impl.cookie.BestMatchSpec.formatCookies(BestMatchSpec.java:189) ~[httpclient-4.2.2.jar:4.2.2] at org.apache.http.client.protocol.RequestAddCookies.process(RequestAddCookies.java:196) ~[httpclient-4.2.2.jar:4.2.2] at org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:109) ~[httpcore-4.2.2.jar:4.2.2] at org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:176) ~[httpcore-4.2.2.jar:4.2.2] at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:515) ~[httpclient-4.2.2.jar:4.2.2] at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) ~[httpclient-4.2.2.jar:4.2.2] at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) ~[httpclient-4.2.2.jar:4.2.2] at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) ~[httpclient-4.2.2.jar:4.2.2] at org.sonatype.nexus.proxy.storage.remote.httpclient.HttpClientRemoteStorage.doExecuteRequest(HttpClientRemoteStorage.java:489) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.storage.remote.httpclient.HttpClientRemoteStorage.executeRequest(HttpClientRemoteStorage.java:449) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.storage.remote.httpclient.HttpClientRemoteStorage.executeRequestAndRelease(HttpClientRemoteStorage.java:560) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.storage.remote.httpclient.HttpClientRemoteStorage.checkRemoteAvailability(HttpClientRemoteStorage.java:329) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.storage.remote.AbstractHTTPRemoteRepositoryStorage.containsItem(AbstractHTTPRemoteRepositoryStorage.java:97) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractProxyRepository.doCheckRemoteItemExistence(AbstractProxyRepository.java:1431) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractProxyRepository.doRetrieveItem0(AbstractProxyRepository.java:1174) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractProxyRepository.doRetrieveItem(AbstractProxyRepository.java:1113) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractRepository.retrieveItem(AbstractRepository.java:836) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractRepository.retrieveItem(AbstractRepository.java:646) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.plugins.ruby.proxy.DefaultRubyProxyRepository.retrieveItem(DefaultRubyProxyRepository.java:206) ~[na:na] at org.sonatype.nexus.proxy.repository.AbstractGroupRepository.doRetrieveItem(AbstractGroupRepository.java:357) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractRepository.retrieveItem(AbstractRepository.java:836) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.proxy.repository.AbstractRepository.retrieveItem(AbstractRepository.java:646) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.plugins.ruby.group.DefaultRubyGroupRepository.retrieveItem(DefaultRubyGroupRepository.java:147) ~[na:na] at org.sonatype.nexus.proxy.router.DefaultRepositoryRouter.retrieveItem(DefaultRepositoryRouter.java:173) ~[nexus-proxy-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.rest.AbstractResourceStoreContentPlexusResource.get(AbstractResourceStoreContentPlexusResource.java:173) ~[nexus-restlet1x-plugin-2.3.1-01.jar:2.3.1-01] at org.sonatype.plexus.rest.resource.RestletResource.represent(RestletResource.java:269) [plexus-restlet-bridge-1.24.jar:na] at org.sonatype.nexus.rest.NexusRestletResource.represent(NexusRestletResource.java:43) [nexus-restlet1x-plugin-2.3.1-01.jar:2.3.1-01] at org.restlet.resource.Resource.getRepresentation(Resource.java:302) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.resource.Resource.handleGet(Resource.java:464) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Finder.handle(Finder.java:353) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Router.handle(Router.java:504) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.sonatype.plexus.rest.RetargetableRestlet.doHandle(RetargetableRestlet.java:39) [plexus-restlet-bridge-1.24.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130) [com.noelios.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124) [com.noelios.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:112) [com.noelios.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Application.handle(Application.java:341) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Router.handle(Router.java:504) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.doHandle(Filter.java:150) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Filter.handle(Filter.java:195) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Router.handle(Router.java:504) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124) [com.noelios.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Component.handle(Component.java:676) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at org.restlet.Server.handle(Server.java:331) [org.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.ServerHelper.handle(ServerHelper.java:68) [com.noelios.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:147) [com.noelios.restlet-1.1.6-SONATYPE-5348-V8.jar:na] at com.noelios.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:881) [com.noelios.restlet.ext.servlet-1.1.6-SONATYPE-5348-V8.jar:na] at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) [javax.servlet-3.0.0.v201112011016.jar:na] at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:278) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:268) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:180) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) [guice-servlet-3.1.2.jar:na] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.1.jar:1.2.1] at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.1.jar:1.2.1] at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.2.1.jar:1.2.1] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.1.jar:1.2.1] at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120) [guice-servlet-3.1.2.jar:na] at org.sonatype.nexus.web.NexusGuiceFilter$MultiFilterChain.doFilter(NexusGuiceFilter.java:88) [nexus-web-utils-2.3.1-01.jar:2.3.1-01] at org.sonatype.nexus.web.NexusGuiceFilter$MultiFilterPipeline.dispatch(NexusGuiceFilter.java:58) [nexus-web-utils-2.3.1-01.jar:2.3.1-01] at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:132) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:129) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:206) [guice-servlet-3.1.2.jar:na] at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:129) [guice-servlet-3.1.2.jar:na] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307) [jetty-servlet-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453) [jetty-servlet-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560) [jetty-security-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382) [jetty-servlet-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.Server.handle(Server.java:365) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635) [jetty-http-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) [jetty-http-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) [jetty-server-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) [jetty-io-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) [jetty-io-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) [jetty-util-8.1.8.v20121106.jar:8.1.8.v20121106] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) [jetty-util-8.1.8.v20121106.jar:8.1.8.v20121106] at org.sonatype.sisu.jetty.thread.RunnableWrapper.run(RunnableWrapper.java:38) [sisu-jetty8-1.4.2.jar:1.4.2] at java.lang.Thread.run(Thread.java:722) [na:1.7.0_06] 2013-04-24 14:42:26 INFO [p1749751043-256] - org.sonatype.nexus.error.reporting.DefaultErrorReportingManager - Detected Error in Nexus: The server encountered an unexpected condition which prevented it from fulfilling the request. Skipping problem report generation because reporting is not enabled

mkristian commented 11 years ago

http://artifacts.dstcorp.net/nexus/content/groups/allgems/quick/Marshal.4.8/pony-1.4.gemspec.rzhttp://artifacts.dstcorp.net/nexus/content/groups/allgems/quick/Marshal.4.8/pony-1.4.gemspec.rz%22:

what happens if you download that file directly ? the error looks like being deep inside the httpclient.

quintonm commented 11 years ago

I will try that the next time that it happens.

Quinton McCombs http://www.linkedin.com/in/quintonmccombs http://www.mafiabuys.com http://www.qdoghosting.com

On Thu, Apr 25, 2013 at 7:00 AM, mkristian notifications@github.com wrote:

http://artifacts.dstcorp.net/nexus/content/groups/allgems/quick/Marshal.4.8/pony-1.4.gemspec.rz < http://artifacts.dstcorp.net/nexus/content/groups/allgems/quick/Marshal.4.8/pony-1.4.gemspec.rz%22 :>

what happens if you download that file directly ? the error looks like being deep inside the httpclient.

— Reply to this email directly or view it on GitHubhttps://github.com/sonatype/nexus-ruby-support/issues/22#issuecomment-17002540 .

eddiewebb commented 11 years ago

We are getting 404's using Bundler. THe 404 is always for the same artifact that seems to be a transitive dependency with a corrupt path,

404 - Not Found

<p>Path /quick/Marshal.4.8/0/0/0/0xffffff-0.0.1.gemspec.rz not found in group repository &quot;My Gems&quot; [id=my-gems].</p>

Curious they are both in the Marshal 4.8 path..

If we use gem to force the install, it resolves correctly next time. Debug output shows numerous 500 generated by the dependency API.

mkristian commented 11 years ago

what is the name of the gem/artifact ? it looks like some regex is messing up.

gist or pastie of the server log would be great too - maybe even when running the server with debug log

liamjbennett commented 11 years ago

We are also seeing this issue with a rubygems.org proxy. The error occurs intermittently but we are seeing it a lot because we run lots of tests in parallel which will be hitting nexus all at once.

The error we get is similar to above:

Fetching from: http://<repo>/nexus/content/repositories/rubygems.org/quick/Marshal.4.8/_-1.0.gemspec.rz
eddiewebb commented 11 years ago

@mkristian - my colleague attached the logs and output to issue #34 - noting that something seems to be appending that invalid 0xffffff to the proper URL.

mkristian commented 11 years ago

I did see the attached logs - and there is indead a 0xffffff gem which I can NOT install and where I do see similar errors then you. so I fix the install of that gem and then I am quite sure your problem is solved as well (guess I have an optimistic day today ;)

eddiewebb commented 11 years ago

Sorry not sure I follow.

Are you saying I need to fix something (i.e. remove files from the drive) or that you have fixed something in the code?

mkristian commented 11 years ago

I need to fix something - not today but tomorrow. the logs showed me the problem (ar at least one problem)

mkristian commented 11 years ago

@liamjbennett yes indeed the gem with name '_' did not work - maybe that solves your problem otherwise just open a new issue

@quintonm I guess you did not see the original issue - I close it now. pease feel free to open a new issue if it pops up again