Uploaded image for project: 'Jira Cloud'
  1. Jira Cloud
  2. JRACLOUD-65601

500 Error from JIRA when uploading a text attachment that is too small

    XMLWordPrintable

Details

    Description

      I can reliably produce a 500 Internal Server Error in JIRA when using the REST API to upload a text attachment that is quite small (definitely under 200 characters, not sure exactly what the threshold is).

      Stack trace:

      [INFO] [talledLocalContainer] 2014-08-05 11:28:23,118 http-bio-2990-exec-28 ERROR addon_jira-hipchat-discussions-connect 688x65394x1 cx5poo 172.22.0.82 /rest/api/2/issue/AHD-2/attachments [common.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
      [INFO] [talledLocalContainer] java.lang.RuntimeException: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.multipart.fileupload.CommonsFileUploadMultipartHandler.getForm(CommonsFileUploadMultipartHandler.java:95)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.multipart.jersey.MultipartFormMessageBodyReader.readFrom(MultipartFormMessageBodyReader.java:39)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.multipart.jersey.MultipartFormMessageBodyReader.readFrom(MultipartFormMessageBodyReader.java:25)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.multipart.jersey.MultipartFormDispatchProvider$1.getInjectableValues(MultipartFormDispatchProvider.java:64)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$EntityParamInInvoker.getParams(DispatchProviderHelper.java:159)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:228)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:178)
      [INFO] [talledLocalContainer] 	at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:795)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:73)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:26)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:40)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.cors.CorsFilter.doFilter(CorsFilter.java:65)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest(AccessLogFilter.java:103)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter(AccessLogFilter.java:87)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.security.xsrf.XsrfTokenAdditionRequestFilter.doFilter(XsrfTokenAdditionRequestFilter.java:54)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.connect.plugin.module.permission.ApiScopingFilter.handleScopedRequest(ApiScopingFilter.java:151)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.connect.plugin.module.permission.ApiScopingFilter.doFilter(ApiScopingFilter.java:97)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:237)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:100)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:172)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:70)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:69)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:40)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:21)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:71)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
      [INFO] [talledLocalContainer] 	at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
      [INFO] [talledLocalContainer] 	at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
      [INFO] [talledLocalContainer] 	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:88)
      [INFO] [talledLocalContainer] 	at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:59)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.gzip.JiraGzipFilter.doFilter(JiraGzipFilter.java:55)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.connect.plugin.threeleggedauth.ThreeLeggedAuthFilter.actAsAddOnUser(ThreeLeggedAuthFilter.java:220)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.connect.plugin.threeleggedauth.ThreeLeggedAuthFilter.processAddOnRequest(ThreeLeggedAuthFilter.java:142)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.connect.plugin.threeleggedauth.ThreeLeggedAuthFilter.doFilter(ThreeLeggedAuthFilter.java:110)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.connect.plugin.module.oauth.OAuth2LOFilter.doFilter(OAuth2LOFilter.java:82)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.fastdev.AutoReloadFilter.doFilter(AutoReloadFilter.java:63)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.jwt.plugin.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:31)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.analytics.client.filter.AnalyticsFilter.doFilter(AnalyticsFilter.java:27)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70)
      [INFO] [talledLocalContainer] 	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:33)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:41)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.PathMatchingEncodingFilter.doFilter(PathMatchingEncodingFilter.java:45)
      [INFO] [talledLocalContainer] 	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(JiraStartupChecklistFilter.java:79)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.MultipartBoundaryCheckFilter.doFilter(MultipartBoundaryCheckFilter.java:41)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87)
      [INFO] [talledLocalContainer] 	at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter(JiraFirstFilter.java:60)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      [INFO] [talledLocalContainer] 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
      [INFO] [talledLocalContainer] 	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
      [INFO] [talledLocalContainer] 	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
      [INFO] [talledLocalContainer] 	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
      [INFO] [talledLocalContainer] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      [INFO] [talledLocalContainer] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      [INFO] [talledLocalContainer] 	at java.lang.Thread.run(Thread.java:724)
      [INFO] [talledLocalContainer] Caused by: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
      [INFO] [talledLocalContainer] 	at com.atlassian.plugins.rest.common.multipart.fileupload.CommonsFileUploadMultipartHandler.getForm(CommonsFileUploadMultipartHandler.java:85)
      [INFO] [talledLocalContainer] 	... 210 more
      [INFO] [talledLocalContainer] Caused by: org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:1005)
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903)
      [INFO] [talledLocalContainer] 	at java.io.FilterInputStream.read(FilterInputStream.java:133)
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:134)
      [INFO] [talledLocalContainer] 	at java.io.FilterInputStream.read(FilterInputStream.java:107)
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.util.Streams.copy(Streams.java:100)
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
      [INFO] [talledLocalContainer] 	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347)
      [INFO] [talledLocalContainer] 	... 211 more
      

      Logging on my side around sending the failed request:

      Uploading attachment "Discussions-Tue, 05 Aug 2014 01:28:23 GMT.log" (43 chars) to tenant "jira:15489595" on issue "AHD-2"
      Received HTTP code 500 from attempt to upload attachment "Discussions-Tue, 05 Aug 2014 01:28:23 GMT.log" (43 characters) to tenant "jira:15489595" on issue "AHD-2". Messages: none.
      

      Node code (in an atlassian-connect-express app):

                  console.log('Uploading attachment "' + filename + '" (' + attachmentContent.length + ' chars) to tenant "' + req.session.clientKey + '" on issue "' + issueKey + '"');
      
                  getHttpClient(req, userKey).post( {
                      url: '/rest/api/2/issue/' + issueKey + '/attachments',
                      headers: {
                          'X-Atlassian-Token': 'nocheck'
                      },
                      form: {
                          file: [
                              attachmentContent,
                              {
                                  filename: filename,
                                  contentType: 'text/plain'
                              }
                          ]
                      }
                  }, function(err, res/*, body*/) {
      
                      var fileDescription = 'attachment "' + filename + '" (' + attachmentContent.length + ' characters)';
      
                      function fail() {
                          var errorMessage = 'JIRA rejected our attempt to upload ' + fileDescription + '.';
                          var responseCode = res ? res.statusCode : null;
                          deferred.resolve({'filename': null, 'isError': true, 'errorMessage': errorMessage, 'responseCode': responseCode});
                      }
      
                      if (err || !res) {
                          console.log('Bad response from uploading to JIRA: err=' + JSON.stringify(err) + ', res=' + JSON.stringify(res));
      
                          // On EAN we often get this error when uploading an attachment, but actually it often succeeds
                          if (err && 'HPE_INVALID_CONSTANT' == err.code) {
                              queryAttachmentExistence(req, userKey, issueKey, filename).then(function(exists) {
                                  if (exists) {
                                      // it actually succeeded!
                                      console.log('... but the attachment "' + filename + '" exists, so it must have been uploaded. JIRA lied to us! Continuing.');
                                      deferred.resolve({'filename':filename, 'isError':false, 'responseCode':res.statusCode});
                                  }
                                  else {
                                      // it really did fail
                                      fail();
                                  }
                              });
                          }
                          else {
                              fail();
                          }
                      }
                      else if (res.statusCode < 200 || res.statusCode >= 300) {
                          var errorMessages = 'none.';
                          try {
                              var body = JSON.parse(res.body);
                              errorMessages = body && body['errorMessages'] ? body['errorMessages'] : 'none.';
                          }
                          catch (error) {}
      
                          var messagePrefix = 'Received HTTP code ' + res.statusCode + ' from attempt to upload ' + fileDescription + ' to ';
                          console.log(messagePrefix + 'tenant "' + req.session.clientKey + '" on issue "' + issueKey + '". Messages: ' + errorMessages);
                          var clientErrorMessage = 500 == res.statusCode ? 'JIRA had an internal error on our attempt to upload ' + fileDescription + '.' : messagePrefix + 'JIRA';
                          deferred.resolve({'filename':null, 'isError':true, 'errorMessage': clientErrorMessage, 'responseCode': res.statusCode});
                      }
                      else {
                          deferred.resolve({'filename':filename, 'isError':false, 'responseCode':res.statusCode});
                      }
                  });
      

      Precise JIRA version: 6.4-OD-03-008#64001-sha1:809dc19

      This has also been reported by the external develper Neeraj Bodhe at https://groups.google.com/forum/#!topic/atlassian-connect-dev/OX-tOQksMro .

      Attachments

        1. PRVIP_320x50_Mobile.txt
          1.0 kB
          Haddon Fisher
        2. PRVIP_468x60_Desktop2.txt
          0.3 kB
          Haddon Fisher
        3. PRVIP_468x60_Tablet2.txt
          0.3 kB
          Haddon Fisher
        4. Screen Shot 2014-08-08 at 10.36.55 am.png
          41 kB
          Peter Brownlow
        5. Screen Shot 2014-12-17 at 10.44.18 AM.png
          46 kB
          Haddon Fisher

        Activity

          People

            Unassigned Unassigned
            pbrownlow Peter Brownlow (Inactive)
            Votes:
            4 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: