syndesisio / syndesis

This project is archived. A flexible, customizable, open source platform that provides core integration capabilities as a service.
https://syndesis.io/
Apache License 2.0
597 stars 204 forks source link

ServiceNow connector: `Unexpected character (']' (code 93)):` when optional fields are empty #3399

Closed mmelko closed 5 years ago

mmelko commented 6 years ago

This is a...


[ ] Feature request
[ ] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report  
[ ] Documentation issue or request

The problem

Currently Retrieve Record action in serviceNow step has two optional parameters The query used to filter the result set and Limit of elements per page. When I try to retrieve records from Incident table (more that 20 000 incidents)with both empty I can see following exception in pod:

--
  | Message History
  | ---------------------------------------------------------------------------------------------------------------------------------------
  | RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
  | [-LK6usU0hqrFaHJ6Vc] [-LK6usU0hqrFaHJ6Vc] [timer://integration?period=60000                                              ] [     64086]
  | [-LK6usU0hqrFaHJ6Vc] [to1               ] [servicenow-1                                                                  ] [     64073]
  | Stacktrace
  | ---------------------------------------------------------------------------------------------------------------------------------------
  | javax.ws.rs.client.ResponseProcessingException: Problem with reading the data, class com.fasterxml.jackson.databind.JsonNode, ContentType: application/json;charset=UTF-8.
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:446) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:386) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:321) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:311) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.camel.component.servicenow.AbstractServiceNowProcessor.setBody(AbstractServiceNowProcessor.java:110) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.AbstractServiceNowProcessor.setBodyAndHeaders(AbstractServiceNowProcessor.java:59) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.releases.helsinki.HelsinkiServiceNowTableProcessor.retrieveRecord(HelsinkiServiceNowTableProcessor.java:90) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.ServiceNowDispatcher.process(ServiceNowDispatcher.java:40) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.AbstractServiceNowProcessor.process(AbstractServiceNowProcessor.java:70) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.impl.BaseSelectorProducer.process(BaseSelectorProducer.java:35) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at io.syndesis.integration.component.proxy.ComponentProxyProducer.process(ComponentProxyProducer.java:44) ~[integration-component-proxy-1.4.5.jar!/:1.4.5]
  | at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:110) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:79) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_151]
  | at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_151]
  | Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (']' (code 93)): expected a value
  | at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@701f452b; line: 1, column: 12706756]
  | at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:456) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2656) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:878) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:772) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeArray(JsonNodeDeserializer.java:269) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:232) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:69) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:15) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1583) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:964) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:815) ~[jackson-jaxrs-base-2.8.11.jar!/:2.8.11]
  | at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1354) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:377) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | ... 23 common frames omitted
  | {"exchange":"i-LK6ldyvQuByAtpu6TsRz","status":"done","failed":true}
  | 2018-08-17 12:06:28.117  WARN 1 --- [r://integration] o.a.camel.component.timer.TimerConsumer  : Error processing exchange. Exchange[i-LK6ldyvQuByAtpu6TsRz]. Caused by: [javax.ws.rs.client.ResponseProcessingException - Problem with reading the data, class com.fasterxml.jackson.databind.JsonNode, ContentType: application/json;charset=UTF-8.]
  | javax.ws.rs.client.ResponseProcessingException: Problem with reading the data, class com.fasterxml.jackson.databind.JsonNode, ContentType: application/json;charset=UTF-8.
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:446) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:386) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:321) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:311) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.camel.component.servicenow.AbstractServiceNowProcessor.setBody(AbstractServiceNowProcessor.java:110) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.AbstractServiceNowProcessor.setBodyAndHeaders(AbstractServiceNowProcessor.java:59) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.releases.helsinki.HelsinkiServiceNowTableProcessor.retrieveRecord(HelsinkiServiceNowTableProcessor.java:90) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.ServiceNowDispatcher.process(ServiceNowDispatcher.java:40) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.servicenow.AbstractServiceNowProcessor.process(AbstractServiceNowProcessor.java:70) ~[camel-servicenow-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.impl.BaseSelectorProducer.process(BaseSelectorProducer.java:35) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at io.syndesis.integration.component.proxy.ComponentProxyProducer.process(ComponentProxyProducer.java:44) ~[integration-component-proxy-1.4.5.jar!/:1.4.5]
  | at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:110) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) ~[camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:79) [camel-core-2.21.0.fuse-000094.jar!/:2.21.0.fuse-000094]
  | at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_151]
  | at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_151]
  | Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (']' (code 93)): expected a value
  | at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@701f452b; line: 1, column: 12706756]
  | at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:456) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2656) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:878) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:772) ~[jackson-core-2.8.11.jar!/:2.8.11]
  | at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeArray(JsonNodeDeserializer.java:269) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:232) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:69) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:15) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1583) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:964) ~[jackson-databind-2.8.11.1.jar!/:2.8.11.1]
  | at com.fasterxml.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:815) ~[jackson-jaxrs-base-2.8.11.jar!/:2.8.11]
  | at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1354) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:377) ~[cxf-rt-frontend-jaxrs-3.1.11.fuse-000263.jar!/:3.1.11.fuse-000263]
  | ... 23 common frames omitted
  | {"exchange":"i-LK6ltcLQuByAtpu6TsTz","status":"begin"}

According documentation: Limit of elements per page should have default value 1000 which is not true because if I set limit to 1000 manually, integration is working.

Expected behavior

Screenshot

Request and Response Data

API Endpoints and Schemas

Tasks involved / Steps to Reproduce

1. 2. 3. 4.

lburgazzoli commented 6 years ago

Sorry my fault, the default value is 10000 not 1000.

@TovaCohen we may need to update the document. @mmelko what is the table you did query ?

mmelko commented 6 years ago

@lburgazzoli as I mentioned Incident table.

TovaCohen commented 6 years ago

Just checking in about this. Do I need to update something in the 7.1 user doc? Please let me know.

mmelko commented 6 years ago

So If I set 10000 I'm getting same error. Looks like default value is too big.

lburgazzoli commented 6 years ago

It looks like this is because of a time-out happens on ServiceNow (there) and the generated json is corrupted. ServiceNow answers with HTTP code 200 so it is ok to process the body for camel.

Let me see if I can get any support from ServiceNow.

heiko-braun commented 5 years ago

It's a problem with servicenow. Closing this as won't fix.