[ https://issues.apache.org/jira/browse/NIFI-1645?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15207919#comment-15207919 ]
Joseph Witt commented on NIFI-1645: ----------------------------------- Had a flow with a batch size of 1000. Basically very little got through. Set it to 1 and suddenly the flow started flying. Slightly larger batch sizes and seems to work again. But there does seem to be a breaking point. The 'queue buffering max time' seems not to matter. Noticed these in stack dumps during the time it wasn't being productive: "Timer-Driven Process Thread-30" Id=151 TIMED_WAITING on java.util.concurrent.CountDownLatch$Sync@2aae9bd3 at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1037) at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1328) at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:277) at org.apache.kafka.clients.producer.internals.ProduceRequestResult.await(ProduceRequestResult.java:68) at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:48) at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:25) at org.apache.nifi.processors.kafka.KafkaPublisher.processAcks(KafkaPublisher.java:153) at org.apache.nifi.processors.kafka.KafkaPublisher.publish(KafkaPublisher.java:142) at org.apache.nifi.processors.kafka.PutKafka$1.process(PutKafka.java:298) at org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:1807) at org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:1778) at org.apache.nifi.processors.kafka.PutKafka.onTrigger(PutKafka.java:295) at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1057) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:136) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:123) 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:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Number of Locked Synchronizers: 1 - java.util.concurrent.ThreadPoolExecutor$Worker@19131dcb that said i see that even when the batch is small so maybe that is meaningless > When using delimited data feature PutKafka ack'd ranges feature can break > ------------------------------------------------------------------------- > > Key: NIFI-1645 > URL: https://issues.apache.org/jira/browse/NIFI-1645 > Project: Apache NiFi > Issue Type: Bug > Reporter: Oleg Zhurakousky > Assignee: Oleg Zhurakousky > Fix For: 0.6.0 > > > When using the delimited lines feature to send data to Kafka such that a > large set of lines that appear to be one 'flowfile' in NiFi is sent as a > series of 1..N messages in Kafka the mechanism of asynchronous > acknowledgement can break down whereby we will receive acknowledgements but > be unable to act on them appropriately because by then the session/data would > have already been considered successfully transferred. This could in > certain/specific conditions mean failed acknowledgements would not result in > a retransfer. > The logic this processor supports for creating child objects to address > failed/partial segments is extremely complicated and should likely be > rewritten to be greatly simplified. Instead the SplitText feature should be > used to create more manageable chunks of data over which if any segment is > ack'd as a failure then the whole thing is failed and thus can be > retransmitted. Always best to enable the user to prefer data loss or data > duplication on their own terms. > Below is the relevant stack trace > {code} > 17:12:37 EDTERROR6162d00f-737f-3710-85f9-318c886af95f > clpen0004.foo.com:8090PutKafka[id=6162d00f-737f-3710-85f9-318c886af95f] > PutKafka[id=6162d00f-737f-3710-85f9-318c886af95f] failed to process session > due to java.lang.IllegalStateException: > java.util.concurrent.ExecutionException: > org.apache.nifi.processor.exception.FlowFileHandlingException: > StandardFlowFileRecord[uuid=a9a7f10d-674e-421f-80f2-7fc0e28a0d1d,claim=StandardContentClaim > [resourceClaim=StandardResourceClaim[id=1458158883054-93724, > container=cont2, section=540], offset=756882, > length=6107144],offset=0,name=1648095619968535,size=6107144] is not known in > this session (StandardProcessSession[id=97534]): > java.lang.IllegalStateException: java.util.concurrent.ExecutionException: > org.apache.nifi.processor.exception.FlowFileHandlingException: > StandardFlowFileRecord[uuid=a9a7f10d-674e-421f-80f2-7fc0e28a0d1d,claim=StandardContentClaim > [resourceClaim=StandardResourceClaim[id=1458158883054-93724, > container=cont2, section=540], offset=756882, > length=6107144],offset=0,name=1648095619968535,size=6107144] is not known in > this session (StandardProcessSession[id=97534]) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)