I found the bug. - Reported as
https://issues.apache.org/jira/browse/NIFI-9019

If I select database index 0, everything works fine. My process which is
not working is using a database index of 3.
So changing my small test flow (which is working) from database index 0 ->
3 produce the same errors in the log and stop working.

I don't know what should make this stop working, but I works fine in
version 1.13.2 but not in version 1.14.0
Create a RedisConnectionPoolService with Database Index = 0
Test attach flow: everything should work
Change Database Index = 3
tail -f the nifi-app.log file and start the the flow again.

kind Regards
Jens M. Kofoed

Den fre. 6. aug. 2021 kl. 11.31 skrev Jens M. Kofoed <jmkofoed....@gmail.com
>:

> Some more digging
>
> I restarted my Redis cluster. Created a new RedisConnectionPoolService and
> a new RedisDistributedMapCacheClientService.
> I created a small test flow: Genereate flowfile -> PutDistributedMapCache
> -> AttributeUpdate
> No problems, it works but...
>
> I went back to one the other flows where I use a DetectDuplicate process
> and I got the following lines in the log
>
> 2021-08-06 11:18:21,123 INFO [Timer-Driven Process Thread-13]
> o.a.n.r.s.RedisConnectionPoolService
> RedisConnectionPoolService[id=160a1056-017b-1000-0000-00005533ce4b]
> Connecting to Redis in sentinel mode...
> 2021-08-06 11:18:21,123 INFO [Timer-Driven Process Thread-13]
> o.a.n.r.s.RedisConnectionPoolService
> RedisConnectionPoolService[id=160a1056-017b-1000-0000-00005533ce4b] Redis
> master = mymaster
> 2021-08-06 11:18:21,123 INFO [Timer-Driven Process Thread-13]
> o.a.n.r.s.RedisConnectionPoolService
> RedisConnectionPoolService[id=160a1056-017b-1000-0000-00005533ce4b] Redis
> sentinel at redis-01:26379
> 2021-08-06 11:18:21,123 INFO [Timer-Driven Process Thread-13]
> o.a.n.r.s.RedisConnectionPoolService
> RedisConnectionPoolService[id=160a1056-017b-1000-0000-00005533ce4b] Redis
> sentinel at redis-02:26379
> 2021-08-06 11:18:21,123 INFO [Timer-Driven Process Thread-13]
> o.a.n.r.s.RedisConnectionPoolService
> RedisConnectionPoolService[id=160a1056-017b-1000-0000-00005533ce4b] Redis
> sentinel at redis-03:26379
> 2021-08-06 11:18:21,124 INFO [Timer-Driven Process Thread-13]
> redis.clients.jedis.JedisSentinelPool Trying to find master from available
> Sentinels...
> 2021-08-06 11:18:21,124 DEBUG [Timer-Driven Process Thread-13]
> redis.clients.jedis.JedisSentinelPool Connecting to Sentinel redis-01:26379
> 2021-08-06 11:18:21,124 WARN [NiFi Web Server-4964]
> org.apache.nifi.audit.ProcessorAuditor Unable to record actions: null
> 2021-08-06 11:18:21,214 INFO [Flow Service Tasks Thread-1]
> o.a.nifi.controller.StandardFlowService Saved flow controller
> org.apache.nifi.controller.FlowController@33ab3784 // Another save
> pending = false
> 2021-08-06 11:18:31,134 WARN [Timer-Driven Process Thread-13]
> redis.clients.jedis.JedisSentinelPool Cannot get master address from
> sentinel running @ i-redis-01:26379. Reason: {}. Trying next one.
> redis.clients.jedis.exceptions.JedisConnectionException:
> javax.net.ssl.SSLException: Read timed out
>         at redis.clients.jedis.Connection.flush(Connection.java:342)
>
> So it connects to me Redis Sentinel cluster, but later it somehow trying
> to use SSL or what???
>
> kind regards
> Jens M. Kofoed
>
> Den fre. 6. aug. 2021 kl. 08.07 skrev Jens M. Kofoed <
> jmkofoed....@gmail.com>:
>
>> Hi
>>
>> I found another WARN in my log, which is about SSLException. However I
>> did NOT specified the new property: SSL Context Service
>> From the documentation: If specified, this service will be used to create
>> an SSL Context that will be used to secure communications; if not
>> specified, communications will not be secure
>>
>> 2021-08-06 07:47:30,166 WARN [Timer-Driven Process Thread-12]
>> redis.clients.jedis.JedisSentinelPool Cannot get master address from
>> sentinel running @ redis-03:26379. Reason: {}. Trying next one.
>> redis.clients.jedis.exceptions.JedisConnectionException:
>> javax.net.ssl.SSLException: Read timed out
>>         at redis.clients.jedis.Connection.flush(Connection.java:342)
>>         at
>> redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:269)
>>         at redis.clients.jedis.BinaryJedis.select(BinaryJedis.java:787)
>>         at
>> redis.clients.jedis.BinaryJedis.initializeFromClientConfig(BinaryJedis.java:99)
>>         at redis.clients.jedis.BinaryJedis.<init>(BinaryJedis.java:82)
>>         at redis.clients.jedis.Jedis.<init>(Jedis.java:54)
>>         at
>> redis.clients.jedis.JedisSentinelPool.initSentinels(JedisSentinelPool.java:251)
>>         at
>> redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:205)
>>         at
>> redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:193)
>>         at
>> org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createRedisSentinelPool(JedisConnectionFactory.java:411)
>>         at
>> org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createPool(JedisConnectionFactory.java:393)
>>         at
>> org.springframework.data.redis.connection.jedis.JedisConnectionFactory.afterPropertiesSet(JedisConnectionFactory.java:348)
>>         at
>> org.apache.nifi.redis.util.RedisUtils.createConnectionFactory(RedisUtils.java:342)
>>         at
>> org.apache.nifi.redis.service.RedisConnectionPoolService.getConnection(RedisConnectionPoolService.java:92)
>>         at sun.reflect.GeneratedMethodAccessor1212.invoke(Unknown Source)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>         at
>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>>         at
>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:105)
>>         at com.sun.proxy.$Proxy181.getConnection(Unknown Source)
>>         at
>> org.apache.nifi.redis.service.RedisDistributedMapCacheClientService.withConnection(RedisDistributedMapCacheClientService.java:375)
>>         at
>> org.apache.nifi.redis.service.RedisDistributedMapCacheClientService.getAndPutIfAbsent(RedisDistributedMapCacheClientService.java:144)
>>         at sun.reflect.GeneratedMethodAccessor1211.invoke(Unknown Source)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>         at
>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>>         at
>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:105)
>>         at com.sun.proxy.$Proxy179.getAndPutIfAbsent(Unknown Source)
>>         at
>> org.apache.nifi.processors.standard.DetectDuplicate.onTrigger(DetectDuplicate.java:183)
>>         at
>> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>>         at
>> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1202)
>>         at
>> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:214)
>>         at
>> org.apache.nifi.controller.scheduling.AbstractTimeBasedSchedulingAgent.lambda$doScheduleOnce$0(AbstractTimeBasedSchedulingAgent.java:63)
>>         at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>>         at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>         at
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
>>         at
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>>         at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>         at java.lang.Thread.run(Thread.java:748)
>> Caused by: javax.net.ssl.SSLException: Read timed out
>>         at sun.security.ssl.Alert.createSSLException(Alert.java:127)
>>         at
>> sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
>>         at
>> sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
>>         at
>> sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
>>         at sun.security.ssl.SSLTransport.decode(SSLTransport.java:138)
>>         at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1383)
>>         at
>> sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1291)
>>         at
>> sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:435)
>>         at
>> sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:804)
>>         at
>> sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:73)
>>         at
>> sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1166)
>>         at
>> redis.clients.jedis.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:52)
>>         at
>> redis.clients.jedis.util.RedisOutputStream.flush(RedisOutputStream.java:133)
>>         at redis.clients.jedis.Connection.flush(Connection.java:339)
>>         ... 40 common frames omitted
>> Caused by: java.net.SocketTimeoutException: Read timed out
>>         at java.net.SocketInputStream.socketRead0(Native Method)
>>         at
>> java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
>>         at java.net.SocketInputStream.read(SocketInputStream.java:171)
>>         at java.net.SocketInputStream.read(SocketInputStream.java:141)
>>         at
>> sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:457)
>>         at
>> sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:165)
>>         at sun.security.ssl.SSLTransport.decode(SSLTransport.java:109)
>>         ... 49 common frames omitted
>>
>> Kind regards
>> Jens M. Kofoed
>>
>> Den fre. 6. aug. 2021 kl. 06.35 skrev Jens M. Kofoed <
>> jmkofoed....@gmail.com>:
>>
>>> Dear Develovper
>>>
>>> I'm using many RedisDistributedMapCacheClientService and
>>> some RedisConnectionPoolService which connect to my 3 node cluster
>>> with Redis sentinels.
>>> After I upgraded one of my NiFi servers to 1.14.0 the processors which
>>> is using the Redis start having issues. Looking in the logs I got the
>>> following errors/WARN.
>>>
>>> 2021-08-05 13:24:12,556 WARN [Timer-Driven Process Thread-3]
>>> o.a.n.controller.tasks.ConnectableTask Administratively Yielding
>>> DetectDuplicate[id=feb1f2ff-4f9c-31d7-87c8-e225a80ef03f] due to uncaught
>>> Exception: redis.clients.jedis.exceptions.JedisConnectionException: All
>>> sentinels down, cannot determine where is mymaster master is running...
>>> redis.clients.jedis.exceptions.JedisConnectionException: All sentinels
>>> down, cannot determine where is mymaster master is running...
>>>         at
>>> redis.clients.jedis.JedisSentinelPool.initSentinels(JedisSentinelPool.java:281)
>>>         at
>>> redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:205)
>>>         at
>>> redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:193)
>>>         at
>>> org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createRedisSentinelPool(JedisConnectionFactory.java:411)
>>>         at
>>> org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createPool(JedisConnectionFactory.java:393)
>>>         at
>>> org.springframework.data.redis.connection.jedis.JedisConnectionFactory.afterPropertiesSet(JedisConnectionFactory.java:348)
>>>         at
>>> org.apache.nifi.redis.util.RedisUtils.createConnectionFactory(RedisUtils.java:342)
>>>         at
>>> org.apache.nifi.redis.service.RedisConnectionPoolService.getConnection(RedisConnectionPoolService.java:92)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>>         at
>>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>>>         at
>>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:105)
>>>         at com.sun.proxy.$Proxy181.getConnection(Unknown Source)
>>>         at
>>> org.apache.nifi.redis.service.RedisDistributedMapCacheClientService.withConnection(RedisDistributedMapCacheClientService.java:375)
>>>         at
>>> org.apache.nifi.redis.service.RedisDistributedMapCacheClientService.getAndPutIfAbsent(RedisDistributedMapCacheClientService.java:144)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>>         at
>>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>>>         at
>>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:105)
>>>         at com.sun.proxy.$Proxy179.getAndPutIfAbsent(Unknown Source)
>>>         at
>>> org.apache.nifi.processors.standard.DetectDuplicate.onTrigger(DetectDuplicate.java:183)
>>>         at
>>> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>>>         at
>>> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1202)
>>>         at
>>> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:214)
>>>         at
>>> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:103)
>>>         at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>>>         at
>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>>>         at
>>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>>>         at
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>>>         at
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>>         at java.lang.Thread.run(Thread.java:748)
>>>
>>> I know the WARN says: All sentinels down, cannot determine where is
>>> mymaster master is running... BUT It is not. The Sentinel master is
>>> running, I have a 2nd NIFI server running with v. 1.13.2 which is using the
>>> same Redis cluster and that one is still working. If I change the server
>>> (which has issues in v. 1.14.0) back to 1.13.2 there are no errors. I also
>>> tried to change one of the other servers to v. 1.14.0 and it have the same
>>> issue.
>>>
>>> A new feature in v.1.14.0 is the property "SSL Context
>>> Service" RedisConnectionPoolService. It says if configured it will use ssl
>>> to establish a secure connection, if it's not configured it will not be
>>> secure. And It is not configured.
>>>
>>> Please any help :-)
>>>
>>> kind regards
>>> Jens M. Kofoed
>>>
>>>

Attachment: RedisTest.json
Description: application/json

Reply via email to