-
Notifications
You must be signed in to change notification settings - Fork 5
Closed
Labels
SP:1Scope ChangeScope change from the initial sprint commitmentScope change from the initial sprint commitmentbugSomething isn't workingSomething isn't working
Milestone
Description
Description
When i don't label arrays correctly in a payload, i get a 500 INTERNAL_SERVER_ERROR instead of a schema violation.
This is the error:
{
"errorId" : "unknown.error",
"httpStatusCode" : 500,
"httpStatusName" : "INTERNAL_SERVER_ERROR",
"requestUrl" : "http://song.qa.argo.cancercollaboratory.org/upload/PACA-CA",
"datetime" : "2019-12-04T19:40:05.848Z[Etc/UTC]",
"timestamp" : 1575488405848,
"message" : "Request processing failed; nested exception is java.lang.IllegalArgumentException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token\n at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: bio.overture.song.server.model.dto.Payload[\"sample\"])",
"debugMessage" : "[ROOT_CAUSE] -> com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token\n at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: bio.overture.song.server.model.dto.Payload[\"sample\"])",
"stackTrace" : [
"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token",
"at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: bio.overture.song.server.model.dto.Payload[\"sample\"])",
"at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1013)",
"at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)",
"at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)",
"at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)",
"at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)",
"at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)",
"at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
"at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)",
"at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)",
"at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)",
"at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)",
"at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)",
"at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)",
"at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
"at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
"at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)",
"at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)",
"at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)",
"at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)",
"at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)",
"at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)",
"at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)",
"at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)",
"at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)",
"at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)",
"at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)",
"at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)",
"at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)",
"at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)",
"at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)",
"at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)",
"at java.base/java.lang.Thread.run(Unknown Source)",
"Caused by: java.lang.IllegalArgumentException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token",
"at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: bio.overture.song.server.model.dto.Payload[\"sample\"])",
"at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3738)",
"at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3656)",
"at bio.overture.song.core.utils.JsonUtils.fromJson(JsonUtils.java:128)",
"at bio.overture.song.server.service.UploadService.parsePayload(UploadService.java:99)",
"at bio.overture.song.server.service.UploadService.submit(UploadService.java:69)",
"at bio.overture.song.server.service.UploadService$$FastClassBySpringCGLIB$$61dfa329.invoke(<generated>)",
"at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)",
"at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)",
"at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)",
"at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295)",
"at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)",
"at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)",
"at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)",
"at bio.overture.song.server.service.UploadService$$EnhancerBySpringCGLIB$$927276b0.submit(<generated>)",
"at bio.overture.song.server.controller.UploadController.submit(UploadController.java:59)",
"at bio.overture.song.server.controller.UploadController$$FastClassBySpringCGLIB$$5eead37d.invoke(<generated>)",
"at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)",
"at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)",
"at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)",
"at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)",
"at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)",
"at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)",
"at bio.overture.song.server.controller.UploadController$$EnhancerBySpringCGLIB$$f1bb36ee.submit(<generated>)",
"at jdk.internal.reflect.GeneratedMethodAccessor384.invoke(Unknown Source)",
"at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)",
"at java.base/java.lang.reflect.Method.invoke(Unknown Source)",
"at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)",
"at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)",
"at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)",
"at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)",
"at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)",
"at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)",
"at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)",
"at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)",
"at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)",
"... 83 more",
"Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token",
"at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: bio.overture.song.server.model.dto.Payload[\"sample\"])",
"at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)",
"at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342)",
"at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1138)",
"at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1092)",
"at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:332)",
"at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:265)",
"at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)",
"at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)",
"at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)",
"at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)",
"at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)",
"at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3733)",
"... 117 more",
""
]
}
Expected Behaviour
It should tell me there is a schema violation and that i need to make samples an array, intead of failing before making it to schema validation.
Steps to Reproduce
- Go to ARGO qa song.
- Submit this payload to the
uploadendpoint:
curl -X POST \
https://song.qa.argo.cancercollaboratory.org/upload/PACA-CA \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Authorization: Bearer 92066829-998c-4aa2-9fc2-b6b241f63ff0' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Length: 1835' \
-H 'Content-Type: application/json' \
-H 'Host: song.qa.argo.cancercollaboratory.org' \
-H 'Postman-Token: 14c3c6ac-3c19-4bb7-963f-9c57b0efa427,258da421-2e2c-4b5a-8c35-4d64af8f0075' \
-H 'User-Agent: PostmanRuntime/7.20.1' \
-H 'cache-control: no-cache' \
-d '{
"study": "PACA-CA",
"program_id": "PACA-CA",
"analysisType": {
"name": "sequencing_experiment",
"version": 3
},
"submitter_sequencing_experiment_id": "rosi-se-1",
"sample":
{
"sampleSubmitterId": "sample-rosi-1",
"sampleType": "DNA",
"specimen": {
"specimenSubmitterId": "specimen-rosi-1",
"specimenClass": "Tumour",
"specimenType": "Primary tumour - solid tissue"
},
"donor": {
"donorSubmitterId": "donor-rosi-1",
"donorGender": "female"
}
}
,
"file": [
{
"fileName": "C0HVY.2_r1.fq",
"fileSize": 133684363564,
"fileType": "FASTQ",
"fileMd5sum": "e4fe8353ae62045642a2124909c5cfa5",
"fileAccess": "controlled"
},
{
"fileName": "C0HVY.2_r2.fq",
"fileSize": 133684363564,
"fileType": "FASTQ",
"fileMd5sum": "e4fe8353ae62045642a2124909c5cfa5",
"fileAccess": "controlled"
}
],
"sequencing_center": "EXT",
"library_strategy": "WGS",
"platform": "Illumina",
"platform_model": "HiSeq 2000",
"read_group_count": 2,
"read_group": [
{
"insert_size": 298,
"is_paired_end": true,
"library_name": "Pond-147580",
"platform_unit": "74_8",
"read_length_r1": 150,
"read_length_r2": 150,
"sample_barcode": null,
"submitter_read_group_id": "C0HVY.2"
},
{
"insert_size": 298,
"is_paired_end": true,
"library_name": "Pond-147580",
"platform_unit": "74_8",
"read_length_r1": 150,
"read_length_r2": 150,
"sample_barcode": null,
"submitter_read_group_id": "D0RE2.1"
}
],
"sequencing_date":"2014-12-12",
"experiment": {},
"workflow": {
"name": "dna-seq-alignment",
"short_name": "dna-seq-alignment",
"version": "0.2.3.0"
}
}
'
Metadata
Metadata
Assignees
Labels
SP:1Scope ChangeScope change from the initial sprint commitmentScope change from the initial sprint commitmentbugSomething isn't workingSomething isn't working