wave icon indicating copy to clipboard operation
wave copied to clipboard

Deserialization exception on WaveScanRecord

Open pditommaso opened this issue 5 months ago • 0 comments

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)

pditommaso avatar Sep 10 '24 06:09 pditommaso