Uploaded image for project: 'Camunda Optimize'
  1. Camunda Optimize
  2. OPT-1447

Cannot upgrade Optimize from 2.1 to 2.2-snapshot

    • Icon: Bug Report Bug Report
    • Resolution: Fixed
    • Icon: L2 - Critical L2 - Critical
    • 2.2.0
    • None
    • backend
    • None

      • given:
        • I run Optimize 2.1
        • Optimize imports data from the engine
        • I define a report and a dashboard containing the report
      • when:
        • I upgrade Optimize to 2.2
        • I start Optimize 2.2
      • then:
        • Either the upgrade fails or I cannot see the report, because the backend returns a 500 status code
      • expected:
        • Optimize 2.2 works flawlessly or the same way as I would use it on a fresh Elasticsearch instance

        This is the controller panel for Smart Panels app

            [OPT-1447] Cannot upgrade Optimize from 2.1 to 2.2-snapshot

            Michael Schoettes added a comment - - edited

            Finding One: Cannot load report after upgrade

            Given
            New Report without additional configuration (no process definition selected, etc.)

            When
            I perform an upgrade to version 2.2

            Then
            I get the following error:

            14:03:29.294 [qtp1567885839-64 - /api/report?] ERROR o.c.o.service.es.reader.ReportReader - While retrieving all available reports it was not possible to deserialize a report from Elasticsearch! Report response from Elasticsearch: {"owner":"demo","reportType":"single","data":{"filter":[],"view":{"property":"","operation":"","entity":""},"visualization":"","configuration":{},"groupBy":{"type":""},"processDefinitionVersion":"","processDefinitionKey":""},"created":"2018-09-19T13:30:37.932+0200","name":"New Report","lastModifier":"demo","lastModified":"2018-09-19T13:30:38.360+0200","id":"11a7ac46-0cc3-4c45-affa-8084798a7236"}
            com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id '' as a subtype of [simple type, class org.camunda.optimize.dto.optimize.query.report.single.group.GroupByDto]: known type ids = [flowNodes, none, startDate, variable] (for POJO property 'groupBy')
             at [Source: (String)"{"owner":"demo","reportType":"single","data":{"filter":[],"view":{"property":"","operation":"","entity":""},"visualization":"","configuration":{},"groupBy":{"type":""},"processDefinitionVersion":"","processDefinitionKey":""},"created":"2018-09-19T13:30:37.932+0200","name":"New Report","lastModifier":"demo","lastModified":"2018-09-19T13:30:38.360+0200","id":"11a7ac46-0cc3-4c45-affa-8084798a7236"}"; line: 1, column: 165] (through reference chain: org.camunda.optimize.dto.optimize.query.report.single.SingleReportDefinitionDto["data"]->org.camunda.optimize.dto.optimize.query.report.single.SingleReportDataDto["groupBy"])
            	at com.fasterxml.jackson.databind.exc.InvalidTypeIdException.from(InvalidTypeIdException.java:43)
            	at com.fasterxml.jackson.databind.DeserializationContext.invalidTypeIdException(DeserializationContext.java:1628)
            	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownTypeId(DeserializationContext.java:1186)
            	at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._handleUnknownTypeId(TypeDeserializerBase.java:291)
            	at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._findDeserializer(TypeDeserializerBase.java:162)
            	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:113)
            	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:97)
            	at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:254)
            	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:136)
            	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369)
            	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
            	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
            	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369)
            	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194)
            	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161)
            	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:130)
            	at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:97)
            	at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:254)
            	at com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68)
            	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
            	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3004)
            	at org.camunda.optimize.service.es.reader.ReportReader.getAllReports(ReportReader.java:116)
            	at org.camunda.optimize.service.report.ReportService.findAndFilterReports(ReportService.java:131)
            	at org.camunda.optimize.service.report.ReportService.findAndFilterReports(ReportService.java:125)
            	at org.camunda.optimize.rest.ReportRestService.getStoredReports(ReportRestService.java:99)
            	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.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
            	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
            	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
            	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243)
            	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
            	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
            	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
            	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
            	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
            	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
            	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
            	at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
            	at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
            	at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
            	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
            	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
            	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
            	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416)
            	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
            	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)
            	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)
            	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)
            	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
            	at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:201)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            	at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)
            	at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:365)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            	at org.camunda.optimize.jetty.LicenseFilter.doFilter(LicenseFilter.java:66)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
            	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
            	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
            	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
            	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
            	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
            	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
            	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
            	at org.eclipse.jetty.server.Server.handle(Server.java:499)
            	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
            	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
            	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
            	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
            	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
            	at java.lang.Thread.run(Thread.java:748)
            

            Michael Schoettes added a comment - - edited Finding One: Cannot load report after upgrade Given New Report without additional configuration (no process definition selected, etc.) When I perform an upgrade to version 2.2 Then I get the following error: 14:03:29.294 [qtp1567885839-64 - /api/report?] ERROR o.c.o.service.es.reader.ReportReader - While retrieving all available reports it was not possible to deserialize a report from Elasticsearch! Report response from Elasticsearch: { "owner" : "demo" , "reportType" : "single" , "data" :{ "filter" :[], "view" :{ "property" : ""," operation ":" "," entity ":" "}," visualization ":" "," configuration ":{}," groupBy ":{" type ":" "}," processDefinitionVersion ":" "," processDefinitionKey ":" "}," created ":" 2018-09-19T13:30:37.932+0200 "," name ":" New Report "," lastModifier ":" demo "," lastModified ":" 2018-09-19T13:30:38.360+0200 "," id ":" 11a7ac46-0cc3-4c45-affa-8084798a7236"} com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id '' as a subtype of [simple type, class org.camunda.optimize.dto.optimize.query.report.single.group.GroupByDto]: known type ids = [flowNodes, none, startDate, variable] ( for POJO property ' groupBy') at [Source: ( String ) "{" owner ":" demo "," reportType ":" single "," data ":{" filter ":[]," view ":{" property ":" "," operation ":" "," entity ":" "}," visualization ":" "," configuration ":{}," groupBy ":{" type ":" "}," processDefinitionVersion ":" "," processDefinitionKey ":" "}," created ":" 2018-09-19T13:30:37.932+0200 "," name ":" New Report "," lastModifier ":" demo "," lastModified ":" 2018-09-19T13:30:38.360+0200 "," id ":" 11a7ac46-0cc3-4c45-affa-8084798a7236 "}" ; line: 1, column: 165] (through reference chain: org.camunda.optimize.dto.optimize.query.report.single.SingleReportDefinitionDto[ "data" ]->org.camunda.optimize.dto.optimize.query.report.single.SingleReportDataDto[ "groupBy" ]) at com.fasterxml.jackson.databind.exc.InvalidTypeIdException.from(InvalidTypeIdException.java:43) at com.fasterxml.jackson.databind.DeserializationContext.invalidTypeIdException(DeserializationContext.java:1628) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownTypeId(DeserializationContext.java:1186) at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._handleUnknownTypeId(TypeDeserializerBase.java:291) at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._findDeserializer(TypeDeserializerBase.java:162) at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:113) at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:97) at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:254) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:136) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369) at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:194) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161) at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:130) at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:97) at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:254) at com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3004) at org.camunda.optimize.service.es.reader.ReportReader.getAllReports(ReportReader.java:116) at org.camunda.optimize.service.report.ReportService.findAndFilterReports(ReportService.java:131) at org.camunda.optimize.service.report.ReportService.findAndFilterReports(ReportService.java:125) at org.camunda.optimize. rest .ReportRestService.getStoredReports(ReportRestService.java:99) 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.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$ static $0(ResourceMethodInvocationHandlerFactory.java:76) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) at org.glassfish.jersey.internal.Errors.process(Errors.java:316) at org.glassfish.jersey.internal.Errors.process(Errors.java:298) at org.glassfish.jersey.internal.Errors.process(Errors.java:268) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416) at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:201) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83) at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:365) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.camunda.optimize.jetty.LicenseFilter.doFilter(LicenseFilter.java:66) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang. Thread .run( Thread .java:748)

            Finding Two: Process Instance Start and End Date missing after upgrade

            Given
            A dataset that contains instances created over the last 5 days

            When
            I observe the raw data

            Then
            I see the start and end date of process instances for the last hour only.

            Michael Schoettes added a comment - Finding Two: Process Instance Start and End Date missing after upgrade Given A dataset that contains instances created over the last 5 days When I observe the raw data Then I see the start and end date of process instances for the last hour only.

            Johannes added a comment -

            I tried every possible combination of reports that I could think of and I couldn't break it! Also I didn't know that it was possible to define functions in Elasticsearch scripts. That's makes the code (painful) scripts at least partially more readable. Really well done Kyrylo

            Johannes added a comment - I tried every possible combination of reports that I could think of and I couldn't break it! Also I didn't know that it was possible to define functions in Elasticsearch scripts. That's makes the code (painful) scripts at least partially more readable. Really well done Kyrylo

              Unassigned Unassigned
              johannes.heinemann Johannes
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: