-
Type:
Bug
-
Resolution: Timed out
-
Priority:
Low
-
None
-
Affects Version/s: BCMA - 1.3.97
-
Component/s: Bitbucket - Migration Assistant
-
9
-
Severity 3 - Minor
-
4
Issue Summary
Migration will fail with Cannot deserialize value of type `com.atlassian.bitbucket.plugin.bcma.migrationservice.TransferStatus` after stopping a BCMA migration plan and trying to create a new one.
This is reproducible on Data Center: yes
Steps to Reproduce
- Create a migration plan with a big chunk of data.
- try to stop it
- while it is on stopping status, create a new migration plan
- The new migration will fail with the error below:
Cannot deserialize value of type `com.atlassian.bitbucket.plugin.bcma.migrationservice.TransferStatus` from String "TIMED_OUT": not one of the values accepted for Enum class: [SKIPPED, READY, IN_PROGRESS, FAILED, INCOMPLETE, SUCCESS]
Expected Results
The migration to complete successfully without errors.
Actual Results
The below exception is thrown in the xxxxxxx.log file:
Date Time ERROR [https-jsse-nio-443-exec-3] user userkey use ipaddress "GET /rest/migration/latest/plan/details/planid HTTP/1.1" c.a.p.r.c.e.j.ThrowableExceptionMapper Uncaught exception thrown by REST service: Error occurred during migration
com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClientErrorException: Error occurred during migration
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceExceptions.clientError(Exceptions.kt:35)
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClient.runHandlingHttpCallExceptions(MigrationServiceClient.kt:574)
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClient.execute(MigrationServiceClient.kt:561)
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClient.getContainers(MigrationServiceClient.kt:403)
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClient.getContainers$default(MigrationServiceClient.kt:384)
at com.atlassian.bitbucket.plugin.bcma.plan.PlanService.getUserProgress(PlanService.kt:343)
at com.atlassian.bitbucket.plugin.bcma.plan.rest.PlanViewBuilder.planDetailsProgress(PlanViewBuilder.kt:30)
at com.atlassian.bitbucket.plugin.bcma.plan.rest.PlanViewBuilder.planDetails(PlanViewBuilder.kt:39)
at com.atlassian.bitbucket.plugin.bcma.plan.rest.PlanResource.planDetails(PlanResource.kt:88)
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
at com.atlassian.analytics.client.filter.UniversalAnalyticsFilter.doFilter(UniversalAnalyticsFilter.java:75)
at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:33)
at com.atlassian.bitbucket.internal.xcode.web.XcodeUserAgentFilter.doFilter(XcodeUserAgentFilter.java:36)
at com.atlassian.bitbucket.plugin.bcma.config.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.kt:16)
at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
at com.atlassian.bitbucket.internal.ratelimit.servlet.filter.RateLimitFilter.doFilter(RateLimitFilter.java:75)
at com.atlassian.plugin.connect.plugin.auth.scope.ApiScopingFilter.doFilter(ApiScopingFilter.java:81)
at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
at com.atlassian.stash.internal.web.auth.AuthorizationFailureInterceptor.doFilterInternal(AuthorizationFailureInterceptor.java:39)
at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:85)
at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:112)
at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75)
at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:94)
at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:67)
at com.atlassian.oauth2.provider.core.web.AccessTokenFilter.lambda$doFilter$0(AccessTokenFilter.java:74)
at com.atlassian.oauth2.scopes.request.DefaultScopesRequestCache.doWithScopes(DefaultScopesRequestCache.java:34)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
at com.atlassian.oauth2.provider.core.web.AccessTokenFilter.doFilter(AccessTokenFilter.java:71)
at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
at com.atlassian.plugin.connect.plugin.auth.oauth2.DefaultSalAuthenticationFilter.doFilter(DefaultSalAuthenticationFilter.java:69)
at com.atlassian.plugin.connect.plugin.auth.user.ThreeLeggedAuthFilter.doFilter(ThreeLeggedAuthFilter.java:109)
at com.atlassian.plugins.authentication.impl.basicauth.filter.DisableBasicAuthFilter.doFilter(DisableBasicAuthFilter.java:70)
at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:37)
at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:26)
at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:33)
at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:90)
at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:73)
at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:84)
at com.atlassian.stash.internal.hazelcast.ConfigurableWebFilter.doFilter(ConfigurableWebFilter.java:38)
at java.lang.Thread.run(Thread.java:750)
... 291 frames trimmed
Caused by: com.atlassian.bitbucket.plugin.bcma.httpclient.exceptions.HttpProtocolException: An error occurred attempting to deserialize to class com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationContainerListResponse
at com.atlassian.bitbucket.plugin.bcma.httpclient.exceptions.ExceptionsKt.protocolError(Exceptions.kt:18)
at com.atlassian.bitbucket.plugin.bcma.httpclient.MigrationPluginHttpClient.parseResponse(MigrationPluginHttpClient.kt:155)
at com.atlassian.bitbucket.plugin.bcma.httpclient.MigrationPluginHttpClient.execute(MigrationPluginHttpClient.kt:75)
at com.atlassian.bitbucket.plugin.bcma.httpclient.MigrationPluginHttpClient.execute(MigrationPluginHttpClient.kt:53)
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClient$execute$1.invoke(MigrationServiceClient.kt:561)
at com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationServiceClient.runHandlingHttpCallExceptions(MigrationServiceClient.kt:566)
... 50 common frames omitted
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `com.atlassian.bitbucket.plugin.bcma.migrationservice.TransferStatus` from String "TIMED_OUT": not one of the values accepted for Enum class: [SKIPPED, READY, IN_PROGRESS, FAILED, INCOMPLETE, SUCCESS]
at [Source: (String)"{"containers":[{"status":"INCOMPLETE","","properties":{},"transfers":[{"transferId":,"status":"SKIPPED","created"[truncated 1009 chars]; line: 1, column: 1229] (through reference chain: com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationContainerListResponse["containers"]->java.util.ArrayList[0]->com.atlassian.bitbucket.plugin.bcma.migrationservice.MigrationContainerResponse["transfers"]->java.util.ArrayList[3]->com.atlassian.bitbucket.plugin.bcma.migrationservice.TransferStatusResponse["status"])
at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1991)
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1219)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:356)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:230)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:198)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:564)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:439)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:564)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:439)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:564)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:439)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3612)
at com.atlassian.bitbucket.plugin.bcma.httpclient.MigrationPluginHttpClient.parseResponse(MigrationPluginHttpClient.kt:153)
... 54 common frames omitted
Workaround
Uninstall the BCMA and reinstall it.