Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

unable to add attachment in jira ticket via API (earlier worked well, facing issue from recent)

Mohammed Safwaan July 23, 2019

We are unable to add attachments to jira ticket while creating ticket using API. However, we are able to successfully create a ticket in Jira but fails to add attachments with it.

API we are using for attachments is as below:

POST https://<Id>.atlassian.net/rest/api/2/issue/<ticket-number>/attachments

Headers: Basic userName:ApiToken X-Atlassian-Token nocheck

We are getting four exceptions as posted below:

1. org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:187)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at com.hexaware.instantfeedback.tickettool.service.impl.JiraTicketSystem.addAttachmentToIssue(JiraTicketSystem.java:714)
at com.hexaware.instantfeedback.tickettool.service.impl.JiraTicketSystem.processAttachments(JiraTicketSystem.java:653)
at com.hexaware.instantfeedback.tickettool.service.impl.JiraTicketSystem.logDefect(JiraTicketSystem.java:567)
at com.hexaware.instantfeedback.tickettool.service.TicketToolService.logDefect(TicketToolService.java:142)
at com.hexaware.instantfeedback.tickettool.controller.TicketToolController.logDefect(TicketToolController.java:41)
at com.hexaware.instantfeedback.ai.controller.AIController.getAIResponse(AIController.java:320)
at com.hexaware.instantfeedback.ai.controller.AIController.processAIResponse(AIController.java:482)
at com.hexaware.instantfeedback.service.DialogflowControllerService.processAIResponse(DialogflowControllerService.java:91)
at com.hexaware.instantfeedback.controller.DPMController.processUserInput(DPMController.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)


2. Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:108)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
... 50 more

3. Caused by: java.io.IOException: Stream Closed
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:233)
at org.apache.http.entity.mime.content.InputStreamBody.writeTo(InputStreamBody.java:92)
at org.apache.http.entity.mime.AbstractMultipartForm.doWriteTo(AbstractMultipartForm.java:134)
at org.apache.http.entity.mime.AbstractMultipartForm.writeTo(AbstractMultipartForm.java:157)
at org.apache.http.entity.mime.MultipartFormEntity.writeTo(MultipartFormEntity.java:113)
at org.apache.http.impl.execchain.RequestEntityProxy.writeTo(RequestEntityProxy.java:121)
at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:156)
at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:160)
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
... 52 more

4. (RetryExec.java:97) - I/O exception (java.io.IOException) caught when processing request to {s}->https://hexinnovlab.atlassian.net:443: Stream Closed

 

Note: We suspect that we stared facing this issue after we migrated to userName:ApiToken for Authentication.

We request you to kindly look into it and help us with your inputs to find a solution.

 

Thanks and Regards

Safwaan

 

2 answers

0 votes
Mohammed Safwaan July 24, 2019

Dear @Thomas Deiler 

As you mentioned, we do have a Binarybody with name "file" in the mime part.

And also we were perfectly able to add attachments to jira tickets, it's only from the past two weeks that we are unable to do so.

 

Safwaan

Thomas Deiler
Community Champion
July 24, 2019

Dear @Mohammed Safwaan ,

if you are 100% sure that you didn't change your environment, then Altassian hat modified cloud API. You can raise a support request to clarify.

So long

Thomas

0 votes
Thomas Deiler
Community Champion
July 24, 2019

Dear @Mohammed Safwaan ,

just to be sure, as username you use the email address, right. But anyhow, the create issue works. Or is this action allowed to anonymous?

How to debug: Try to dump the request you create by java code to some REST client and see if it also does not work.

So long

Thomas

Mohammed Safwaan July 24, 2019

Yes @Thomas Deiler username is nothing but my email address linked to Jira. We put email address and Api Token as email:ApiToken String and encode it using Base 64 encoding.

We tried to test the attachment API of Version 2 in Postman and it resulted with "Could not get any Response". 

when you mentioned about dumping the request to some REST client did you mean using tools like postman ? if not so can you please elaborate?

 

Below is the response generated by postman.

postmanScreenshot.png

Thanks

Safwaan

Thomas Deiler
Community Champion
July 24, 2019

Dear @Mohammed Safwaan ,

postman is pretty fine. So this create attachments does not work, only. Other requests work?

I remember that creating attachments for Jira Server via REST was also tricky. The mime part requires a BinaryBody with name "file".

So long

Thomas

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events