Kylo API not working when using GMT timezone

Description

When accessing the services UI, Kylo was showing NiFi status as UNHEALTHY, even both service being up and running.

After some troubleshooting, I've realized the API was returning the following error when parsing the date '"javax.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.JsonMappingException: Text '12:06:13 Etc/GMT+3' could not be parsed at index 9 (through reference chain: org.apache.nifi.web.api.entity.ProcessGroupFlowEntity["processGroupFlow"]-"

I've changed the Timezone to UTC, and now NiFi service is marked as HEALTHY.

  •  

    • The server was using the timezone GMT+3

  • To reproduce the scenario, you can use the Linux command:*

unlink /etc/localtime
ln -s /usr/share/zoneinfo/Etc/GMT+3 /etc/localtime

Below is the full log error:

2018-09-17 12:06:13 ERROR NiFi-Flow-Insepction-0:JerseyRestClient:421 - Failed to process request org.glassfish.jersey.client.JerseyInvocation$Builder@18752e2d
javax.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.JsonMappingException: Text '12:06:13 Etc/GMT+3' could not be parsed at index 9 (through reference chain: org.apache.nifi.web.api.entity.ProcessGroupFlowEntity["processGroupFlow"]>org.apache.nifi.web.api.dto.flow.ProcessGroupFlowDTO["flow"]>org.apache.nifi.web.api.dto.flow.FlowDTO["processGroups"]>java.util.HashSet[0]>org.apache.nifi.web.api.entity.ProcessGroupEntity["status"]->org.apache.nifi.web.api.dto.status.ProcessGroupStatusDTO["statsLastRefreshed"])
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:806)
at org.glassfish.jersey.client.JerseyInvocation.access$700(JerseyInvocation.java:92)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:700)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:696)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:420)
at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:316)
at com.thinkbiganalytics.rest.JerseyRestClient.get(JerseyRestClient.java:415)
at com.thinkbiganalytics.rest.JerseyRestClient.get(JerseyRestClient.java:438)
at com.thinkbiganalytics.rest.JerseyRestClient.get(JerseyRestClient.java:466)
at com.thinkbiganalytics.rest.JerseyRestClient.get(JerseyRestClient.java:451)
at com.thinkbiganalytics.nifi.v1.rest.client.NiFiProcessGroupsRestClientV1.flow(NiFiProcessGroupsRestClientV1.java:218)
at com.thinkbiganalytics.feedmgr.nifi.cache.NiFiFlowInspector.inspect(NiFiFlowInspector.java:63)
at com.thinkbiganalytics.feedmgr.nifi.cache.NiFiFlowInspectorManager.lambda$addGroupToInspect$0(NiFiFlowInspectorManager.java:160)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Text '12:06:13 Etc/GMT+3' could not be parsed at index 9 (through reference chain: org.apache.nifi.web.api.entity.ProcessGroupFlowEntity["processGroupFlow"]>org.apache.nifi.web.api.dto.flow.ProcessGroupFlowDTO["flow"]>org.apache.nifi.web.api.dto.flow.FlowDTO["processGroups"]>java.util.HashSet[0]>org.apache.nifi.web.api.entity.ProcessGroupEntity["status"]->org.apache.nifi.web.api.dto.status.ProcessGroupStatusDTO["statsLastRefreshed"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:210)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:177)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1474)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:258)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:256)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:256)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:256)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:256)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1470)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:912)
at com.fasterxml.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:811)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:256)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:235)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:155)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1085)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:808)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:326)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:803)
... 20 more
Caused by: java.time.format.DateTimeParseException: Text '12:06:13 Etc/GMT+3' could not be parsed at index 9
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at org.apache.nifi.web.api.dto.util.TimeAdapter.unmarshal(TimeAdapter.java:55)
at org.apache.nifi.web.api.dto.util.TimeAdapter.unmarshal(TimeAdapter.java:33)
at com.fasterxml.jackson.module.jaxb.AdapterConverter.convert(AdapterConverter.java:35)
at com.fasterxml.jackson.databind.deser.std.StdDelegatingDeserializer.convertValue(StdDelegatingDeserializer.java:230)
at com.fasterxml.jackson.databind.deser.std.StdDelegatingDeserializer.deserialize(StdDelegatingDeserializer.java:164)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:256)
... 51 more
2018-09-17 12:06:13 WARN NiFi-Flow-Insepction-0:NiFiFlowInspector:71 - Exception while inspecting process group: root on thread NiFi-Flow-Insepction-0. The system will attempt to inspect again.
2018-09-17 12:06:13 WARN NiFi-Flow-Insepction-0:NiFiFlowInspector:75 - Retry inspecting process group: root on thread NiFi-Flow-Insepction-0.
2018-09-17 12:06:13 INFO NiFi-Flow-Insepction-0:NiFiFlowInspector:58 - Retry inspection attempt number: 1. Inspecting process group: root on thread NiFi-Flow-Insepction-0

Environment

None

Assignee

Unassigned

Reporter

Raphael Nascimento Santos

Labels

None

Reviewer

None

Story point estimate

None

Components

Affects versions

Priority

Medium
Configure