wave
wave copied to clipboard
Deserialization exception on WaveScanRecord
In some cases the following error is reported. This seems a problem when a container tag is interpreted as float value by Surreal. See GET /view/scans/bbmap-38.96--caf1c23cccfadf79
2024-09-06 04:54:18.510 02:54:18.507 [io-executor-thread-349] ERROR io.seqera.wave.ErrorHandler - Cannot construct instance of `io.seqera.wave.service.persistence.WaveScanRecord[]`: no String-argument constructor/factory method to deserialize from String value ('Cannot perform subtraction with 'wave_scan:bbmap' and '38.96f'')
at [Source: (String)"[{"result":"Cannot perform subtraction with 'wave_scan:bbmap' and '38.96f'","status":"ERR","time":"36.88µs"}]"; line: 1, column: 12] (through reference chain: java.util.ArrayList[0]->io.seqera.wave.service.persistence.impl.SurrealResult["result"]) - Error ID: 712b0fdb8094 - Request: GET /view/scans/bbmap-38.96--caf1c23cccfadf79
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.seqera.wave.service.persistence.WaveScanRecord[]`: no String-argument constructor/factory method to deserialize from String value ('Cannot perform subtraction with 'wave_scan:bbmap' and '38.96f'')
at [Source: (String)"[{"result":"Cannot perform subtraction with 'wave_scan:bbmap' and '38.96f'","status":"ERR","time":"36.88µs"}]"; line: 1, column: 12] (through reference chain: java.util.ArrayList[0]->io.seqera.wave.service.persistence.impl.SurrealResult["result"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1915)
at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:414)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1355)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromString(StdDeserializer.java:311)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.handleNonArray(ObjectArrayDeserializer.java:343)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:196)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:26)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:314)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:359)
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.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4825)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3772)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3755)
at io.seqera.wave.util.JacksonHelper.fromJson(JacksonHelper.groovy:84)
at io.seqera.wave.service.persistence.impl.SurrealPersistenceService.loadScanRecord(SurrealPersistenceService.groovy:232)
at io.seqera.wave.service.persistence.PersistenceService$Trait$Helper.loadScanResult(PersistenceService.groovy:115)
at io.seqera.wave.service.persistence.impl.SurrealPersistenceService.loadScanResult(SurrealPersistenceService.groovy)
at io.seqera.wave.controller.ViewController.viewScan(ViewController.groovy:149)
at io.seqera.wave.controller.$ViewController$Definition$Exec.dispatch(Unknown Source)
at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invoke(AbstractExecutableMethodsDefinition.java:371)
at io.micronaut.context.DefaultBeanContext$4.invoke(DefaultBeanContext.java:594)
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:303)
at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:111)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:103)
at io.micronaut.http.server.RouteExecutor.lambda$executeRoute$14(RouteExecutor.java:659)
at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:49)
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:194)
at io.micronaut.reactive.reactor.instrument.ReactorInstrumentation.lambda$init$0(ReactorInstrumentation.java:62)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at io.micronaut.scheduling.instrument.InvocationInstrumenterWrappedCallable.call(InvocationInstrumenterWrappedCallable.java:53)
at io.micrometer.core.instrument.composite.CompositeTimer.recordCallable(CompositeTimer.java:129)
at io.micrometer.core.instrument.Timer.lambda$wrap$1(Timer.java:206)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)