[CAM-9256] Deletion of file variable breaks history detail/optimize rest endpoint Created: 08/Aug/18  Updated: 31/Aug/18  Resolved: 14/Aug/18

Status: Closed
Project: camunda BPM
Component/s: engine
Affects Version/s: 7.9.0
Fix Version/s: 7.10.0, 7.9.3, 7.8.9, 7.10.0-alpha3

Type: Bug Report Priority: L3 - Default
Reporter: Johannes Heinemann Assignee: Michael Schoettes
Resolution: Fixed Votes: 0
Labels: SUPPORT, engine-rest
Remaining Estimate: 0 minutes
Time Spent: Not Specified
Original Estimate: 0 minutes

Issue Links:
Related

 Description   
  • given:
    • I start a process instance with a file variable
    • The process instance is pending in a wait state
    • I remove the file variable
  • when:
    • I retrieve the historic details via REST-API or variable updates via optimize REST-API endpoint
  • then:
    • I get an error message as a response with status code 500
  • expected:
    • I can retrieve variable updates even if a file variable was removed

Hint:

  • This is the error message you get:
    [7/30/18 8:46:45:218 CEST] 000002d5 0(id=121)]    W org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging Application {http://impl.rest.engine.bpm.camunda.org/}NamedProcessEngineRestServiceImpl has thrown exception, unwinding now
                                     org.apache.cxf.interceptor.Fault: UTILS-02001 Parameter 'filename' is null
            at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
            at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:129)
            at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:174)
            at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:200)
            at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:346)
            at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:271)
            at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:346)
            at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)
            at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:61)
            at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:99)
            at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
            at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
            at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:256)
            at com.ibm.ws.jaxrs20.endpoint.AbstractJaxRsWebEndpoint.invoke(AbstractJaxRsWebEndpoint.java:147)
            at com.ibm.websphere.jaxrs.server.IBMRestServlet.handleRequest(IBMRestServlet.java:187)
            at com.ibm.websphere.jaxrs.server.IBMRestServlet.doGet(IBMRestServlet.java:153)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
            at com.ibm.websphere.jaxrs.server.IBMRestServlet.service(IBMRestServlet.java:133)
            at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
            at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
            at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
            at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
            at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)
            at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96)
            at org.camunda.bpm.engine.rest.security.auth.ProcessEngineAuthenticationFilter.doFilter(ProcessEngineAuthenticationFilter.java:151)
            at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
            at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
            at org.camunda.bpm.engine.rest.filter.CacheControlFilter.doFilter(CacheControlFilter.java:41)
            at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
            at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
            at org.camunda.bpm.engine.rest.filter.EmptyBodyFilter.doFilter(EmptyBodyFilter.java:97)
            at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
            at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
            at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:969)
            at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1109)
            at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:82)
            at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:963)
            at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
            at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
            at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
            at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
            at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
            at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
            at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(Unknown Source)
            at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInboundPostHandshake(Unknown Source)
            at com.ibm.ws.ssl.channel.impl.SSLConnectionLink$MyHandshakeCompletedCallback.complete(Unknown Source)
            at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(Unknown Source)
            at com.ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(Unknown Source)
            at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(Unknown Source)
            at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(Unknown Source)
            at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(Unknown Source)
            at com.ibm.io.async.AsyncFuture.completed(Unknown Source)
            at com.ibm.io.async.ResultHandler.complete(Unknown Source)
            at com.ibm.io.async.ResultHandler.runEventProcessingLoop(Unknown Source)
            at com.ibm.io.async.ResultHandler$2.run(Unknown Source)
            at com.ibm.ws.util.ThreadPool$Worker.run(Unknown Source)
    Caused by: java.lang.IllegalArgumentException: UTILS-02001 Parameter 'filename' is null
            at org.camunda.commons.utils.EnsureUtilLogger.parameterIsNullException(EnsureUtilLogger.java:21)
            at org.camunda.commons.utils.EnsureUtil.ensureNotNull(EnsureUtil.java:31)
            at org.camunda.bpm.engine.variable.impl.value.builder.FileValueBuilderImpl.<init>(FileValueBuilderImpl.java:37)
            at org.camunda.bpm.engine.variable.Variables.fileValue(Variables.java:404)
            at org.camunda.bpm.engine.variable.Variables.fileValue(Variables.java:396)
            at org.camunda.bpm.engine.impl.variable.serializer.FileValueSerializer.readValue(FileValueSerializer.java:68)
            at org.camunda.bpm.engine.impl.variable.serializer.FileValueSerializer.readValue(FileValueSerializer.java:29)
            at org.camunda.bpm.engine.impl.persistence.entity.util.TypedValueField.getTypedValue(TypedValueField.java:93)
            at org.camunda.bpm.engine.impl.persistence.entity.util.TypedValueField.getTypedValue(TypedValueField.java:79)
            at org.camunda.bpm.engine.impl.persistence.entity.HistoricDetailVariableInstanceUpdateEntity.getTypedValue(HistoricDetailVariableInstanceUpdateEntity.java:49)
            at org.camunda.bpm.engine.rest.dto.history.HistoricVariableUpdateDto.fromHistoricVariableUpdate(HistoricVariableUpdateDto.java:80)
            at org.camunda.bpm.engine.rest.dto.history.HistoricOptimizeVariableUpdateDto.fromHistoricVariableUpdate(HistoricOptimizeVariableUpdateDto.java:32)
            at org.camunda.bpm.engine.rest.impl.optimize.OptimizeRestService.getHistoricVariableUpdates(OptimizeRestService.java:134)
            at sun.reflect.GeneratedMethodAccessor198.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:657)
            at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.performInvocation(LibertyJaxRsInvoker.java:108)
            at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97)
            ... 54 more
    


 Comments   
Comment by Yana Vasileva [ 13/Aug/18 ]

Nikola Koevski, could you please move the ticket to test column after the review.

Endpoints to test:

GET http://localhost:8080/engine-rest/history/detail
GET http://localhost:8080/engine-rest/optimize/variable-update
Generated at Tue Jun 25 03:39:09 CEST 2019 using JIRA 6.4.6#64021-sha1:33e5b454af4594f54560ac233c30a6e00459507e.