[jira] [Updated] (KAFKA-3966) KafkaConsumer briefly ignores partitions on backlogs

2016-07-14 Thread Kanak Biscuitwala (JIRA)

 [ 
https://issues.apache.org/jira/browse/KAFKA-3966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kanak Biscuitwala updated KAFKA-3966:
-
Summary: KafkaConsumer briefly ignores partitions on backlogs  (was: 
Consumer briefly ignores partitions on backlogs)

> KafkaConsumer briefly ignores partitions on backlogs
> 
>
> Key: KAFKA-3966
> URL: https://issues.apache.org/jira/browse/KAFKA-3966
> Project: Kafka
>  Issue Type: Bug
>  Components: consumer
>Affects Versions: 0.10.0.0
>Reporter: Kanak Biscuitwala
> Attachments: screenshot-1.png
>
>
> Setup:
> Kafka 0.10.0.0
> 9 brokers
> 36 partitions
> 12 members in the consumer group
> 5 producers, partitioning data roughly evenly
> max.poll.records = 10
> ~1500 events/sec
> ~500 bytes/message
> KafkaConsumer API
> In the following setup, 3 partitions are assigned to each consumer (and 12 
> are served by each broker). I've noticed that the third of the three 
> partitions tends to be ignored in favor of the first two on each consumer, 
> even though the third partition has data available. Only until the first two 
> partitions are fully caught up does the consumer return back messages from 
> the third. This causes a frustrating imbalance in which the same partitions 
> always fall behind.
> As a side note, this is true for all of our topics, regardless of 
> partitioning strategy. The problem goes away if there are exactly as many 
> consumers as partitions.
> I can attach a screenshot showing the same partitions falling behind 
> (verified that they're each assigned to different nodes), if that is helpful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (KAFKA-3966) Consumer briefly ignores partitions on backlogs

2016-07-14 Thread Kanak Biscuitwala (JIRA)

 [ 
https://issues.apache.org/jira/browse/KAFKA-3966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kanak Biscuitwala updated KAFKA-3966:
-
Affects Version/s: 0.10.0.0

> Consumer briefly ignores partitions on backlogs
> ---
>
> Key: KAFKA-3966
> URL: https://issues.apache.org/jira/browse/KAFKA-3966
> Project: Kafka
>  Issue Type: Bug
>  Components: consumer
>Affects Versions: 0.10.0.0
>Reporter: Kanak Biscuitwala
> Attachments: screenshot-1.png
>
>
> Setup:
> Kafka 0.10.0.0
> 9 brokers
> 36 partitions
> 12 members in the consumer group
> 5 producers, partitioning data roughly evenly
> max.poll.records = 10
> ~1500 events/sec
> ~500 bytes/message
> KafkaConsumer API
> In the following setup, 3 partitions are assigned to each consumer (and 12 
> are served by each broker). I've noticed that the third of the three 
> partitions tends to be ignored in favor of the first two on each consumer, 
> even though the third partition has data available. Only until the first two 
> partitions are fully caught up does the consumer return back messages from 
> the third. This causes a frustrating imbalance in which the same partitions 
> always fall behind.
> As a side note, this is true for all of our topics, regardless of 
> partitioning strategy. The problem goes away if there are exactly as many 
> consumers as partitions.
> I can attach a screenshot showing the same partitions falling behind 
> (verified that they're each assigned to different nodes), if that is helpful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (KAFKA-3966) Consumer briefly ignores partitions on backlogs

2016-07-14 Thread Kanak Biscuitwala (JIRA)

 [ 
https://issues.apache.org/jira/browse/KAFKA-3966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kanak Biscuitwala updated KAFKA-3966:
-
Component/s: consumer

> Consumer briefly ignores partitions on backlogs
> ---
>
> Key: KAFKA-3966
> URL: https://issues.apache.org/jira/browse/KAFKA-3966
> Project: Kafka
>  Issue Type: Bug
>  Components: consumer
>Affects Versions: 0.10.0.0
>Reporter: Kanak Biscuitwala
> Attachments: screenshot-1.png
>
>
> Setup:
> Kafka 0.10.0.0
> 9 brokers
> 36 partitions
> 12 members in the consumer group
> 5 producers, partitioning data roughly evenly
> max.poll.records = 10
> ~1500 events/sec
> ~500 bytes/message
> KafkaConsumer API
> In the following setup, 3 partitions are assigned to each consumer (and 12 
> are served by each broker). I've noticed that the third of the three 
> partitions tends to be ignored in favor of the first two on each consumer, 
> even though the third partition has data available. Only until the first two 
> partitions are fully caught up does the consumer return back messages from 
> the third. This causes a frustrating imbalance in which the same partitions 
> always fall behind.
> As a side note, this is true for all of our topics, regardless of 
> partitioning strategy. The problem goes away if there are exactly as many 
> consumers as partitions.
> I can attach a screenshot showing the same partitions falling behind 
> (verified that they're each assigned to different nodes), if that is helpful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (KAFKA-3966) Consumer briefly ignores partitions on backlogs

2016-07-14 Thread Kanak Biscuitwala (JIRA)

 [ 
https://issues.apache.org/jira/browse/KAFKA-3966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kanak Biscuitwala updated KAFKA-3966:
-
Attachment: screenshot-1.png

> Consumer briefly ignores partitions on backlogs
> ---
>
> Key: KAFKA-3966
> URL: https://issues.apache.org/jira/browse/KAFKA-3966
> Project: Kafka
>  Issue Type: Bug
>Reporter: Kanak Biscuitwala
> Attachments: screenshot-1.png
>
>
> Setup:
> Kafka 0.10.0.0
> 9 brokers
> 36 partitions
> 12 members in the consumer group
> 5 producers, partitioning data roughly evenly
> max.poll.records = 10
> ~1500 events/sec
> ~500 bytes/message
> KafkaConsumer API
> In the following setup, 3 partitions are assigned to each consumer (and 12 
> are served by each broker). I've noticed that the third of the three 
> partitions tends to be ignored in favor of the first two on each consumer, 
> even though the third partition has data available. Only until the first two 
> partitions are fully caught up does the consumer return back messages from 
> the third. This causes a frustrating imbalance in which the same partitions 
> always fall behind.
> As a side note, this is true for all of our topics, regardless of 
> partitioning strategy. The problem goes away if there are exactly as many 
> consumers as partitions.
> I can attach a screenshot showing the same partitions falling behind 
> (verified that they're each assigned to different nodes), if that is helpful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (KAFKA-3966) Consumer briefly ignores partitions on backlogs

2016-07-14 Thread Kanak Biscuitwala (JIRA)
Kanak Biscuitwala created KAFKA-3966:


 Summary: Consumer briefly ignores partitions on backlogs
 Key: KAFKA-3966
 URL: https://issues.apache.org/jira/browse/KAFKA-3966
 Project: Kafka
  Issue Type: Bug
Reporter: Kanak Biscuitwala
 Attachments: screenshot-1.png

Setup:
Kafka 0.10.0.0
9 brokers
36 partitions
12 members in the consumer group
5 producers, partitioning data roughly evenly
max.poll.records = 10
~1500 events/sec
~500 bytes/message
KafkaConsumer API

In the following setup, 3 partitions are assigned to each consumer (and 12 are 
served by each broker). I've noticed that the third of the three partitions 
tends to be ignored in favor of the first two on each consumer, even though the 
third partition has data available. Only until the first two partitions are 
fully caught up does the consumer return back messages from the third. This 
causes a frustrating imbalance in which the same partitions always fall behind.

As a side note, this is true for all of our topics, regardless of partitioning 
strategy. The problem goes away if there are exactly as many consumers as 
partitions.

I can attach a screenshot showing the same partitions falling behind (verified 
that they're each assigned to different nodes), if that is helpful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (KAFKA-3552) New Consumer: java.lang.OutOfMemoryError: Direct buffer memory

2016-04-19 Thread Kanak Biscuitwala (JIRA)

[ 
https://issues.apache.org/jira/browse/KAFKA-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15249065#comment-15249065
 ] 

Kanak Biscuitwala commented on KAFKA-3552:
--

In fact, I'm reasonably certain there is some kind of leak. The physical memory 
usage of my service goes from 1.5G to over 3G over time, and this is even when 
I'm keeping up. When I'm not keeping up, this can balloon to 5G, even though 
the maximum number of bytes I'm supposed to get back is only 1MB (and 
presumably if I pause all partitions first, I'll get back 0 bytes?).

> New Consumer: java.lang.OutOfMemoryError: Direct buffer memory
> --
>
> Key: KAFKA-3552
> URL: https://issues.apache.org/jira/browse/KAFKA-3552
> Project: Kafka
>  Issue Type: Bug
>  Components: consumer
>Affects Versions: 0.9.0.1
>Reporter: Kanak Biscuitwala
>Assignee: Liquan Pei
> Attachments: Screen Shot 2016-04-13 at 11.56.05 AM.png, Screen Shot 
> 2016-04-13 at 2.17.48 PM.png
>
>
> I'm running Kafka's new consumer with message handlers that can sometimes 
> take a lot of time to return, and combining that with manual offset 
> management (to get at-least-once semantics). Since poll() is the only way to 
> heartbeat with the consumer, I have a thread that runs every 500 milliseconds 
> that does the following:
> 1) Pause all partitions
> 2) Call poll(0)
> 3) Resume all partitions
> For the record, all accesses to KafkaConsumer are protected by synchronized 
> blocks. This generally works, but I'm occasionally seeing messages like this:
> {code}
> java.lang.OutOfMemoryError: Direct buffer memory
> at java.nio.Bits.reserveMemory(Bits.java:658)
> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
> at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
> at sun.nio.ch.IOUtil.read(IOUtil.java:195)
> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
> at 
> org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
> at 
> org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
> at 
> org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
> at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
> at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)
> at 
> org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:908)
> at 
> org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:853)
> {code}
> In addition, when I'm reporting offsets, I'm seeing:
> {code}
> java.lang.OutOfMemoryError: Direct buffer memory
> at java.nio.Bits.reserveMemory(Bits.java:658)
> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
> at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
> at sun.nio.ch.IOUtil.read(IOUtil.java:195)
> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
> at 
> org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
> at 
> org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
> at 
> org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
> at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
> at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)
> at 
> org.apache.kafka.clients.consumer.i

[jira] [Commented] (KAFKA-3552) New Consumer: java.lang.OutOfMemoryError: Direct buffer memory

2016-04-13 Thread Kanak Biscuitwala (JIRA)

[ 
https://issues.apache.org/jira/browse/KAFKA-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15240051#comment-15240051
 ] 

Kanak Biscuitwala commented on KAFKA-3552:
--

Looks like there is a full GC immediately before the OOM (and that's confusing 
because shouldn't the completion of a full GC be enough to free up memory?):

{code}
2016-04-13T18:19:47.181+: 5318.045: [GC [1 CMS-initial-mark: 
702209K(900444K)] 809543K(1844188K), 0.0330340 secs] [Times: user=0.03 
sys=0.00, real=0.03 secs]
2016-04-13T18:19:47.214+: 5318.078: [CMS-concurrent-mark-start]
2016-04-13T18:19:47.563+: 5318.427: [CMS-concurrent-mark: 0.349/0.349 secs] 
[Times: user=0.58 sys=0.16, real=0.35 secs]
2016-04-13T18:19:47.564+: 5318.427: [CMS-concurrent-preclean-start]
2016-04-13T18:19:47.573+: 5318.436: [CMS-concurrent-preclean: 0.008/0.009 
secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
2016-04-13T18:19:47.573+: 5318.437: 
[CMS-concurrent-abortable-preclean-start]
2016-04-13T18:19:49.670+: 5320.534: [Full GC2016-04-13T18:19:49.671+: 
5320.534: [CMS2016-04-13T18:19:49.677+: 5320.541: 
[CMS-concurrent-abortable-preclean: 2.079/2.104 secs] [Times: user=3.46 
sys=0.22, real=2.11 secs]
 (concurrent mode interrupted): 702209K->385639K(900444K), 0.8443580 secs] 
1507659K->385639K(1844188K), [CMS Perm : 56002K->56002K(83968K)], 0.8448730 
secs] [Times: user=0.86 sys=0.00, real=0.84 secs]
2016-04-13T18:19:52.619+: 5323.483: [Full GC2016-04-13T18:19:52.620+: 
5323.483: [CMS: 385639K->384334K(900444K), 0.6693420 secs] 
714628K->384334K(1844188K), [CMS Perm : 56002K->56002K(83968K)], 0.6698370 
secs] [Times: user=0.68 sys=0.00, real=0.67 secs]
2016-04-13T18:19:55.395+: 5326.259: [Full GC2016-04-13T18:19:55.395+: 
5326.259: [CMS: 384334K->383389K(900444K), 0.6660360 secs] 
695662K->383389K(1844188K), [CMS Perm : 56002K->56002K(83968K)], 0.6665300 
secs] [Times: user=0.68 sys=0.00, real=0.67 secs]
2016-04-13T18:19:58.166+: 5329.030: [Full GC2016-04-13T18:19:58.166+: 
5329.030: [CMS: 383389K->382675K(900444K), 0.6607420 secs] 
624249K->382675K(1844188K), [CMS Perm : 56002K->56002K(83968K)], 0.6612310 
secs] [Times: user=0.67 sys=0.00, real=0.66 secs]
2016-04-13T18:20:01.171+: 5332.035: [GC2016-04-13T18:20:01.171+: 
5332.035: [ParNew: 838912K->90048K(943744K), 0.0167690 secs] 
1221587K->472723K(1844188K), 0
.0172720 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
2016-04-13T18:20:07.407+: 5338.270: [GC2016-04-13T18:20:07.407+: 
5338.271: [ParNew: 928960K->25607K(943744K), 0.0232340 secs] 
1311635K->408283K(1844188K), 0
.0237360 secs] [Times: user=0.07 sys=0.00, real=0.03 secs]
{code}

And the OOM occurs at 2016-04-13/18:19:58.928 UTC

I do see that my host is running somewhat low on physical memory (but has 
plenty of swap) -- the heap dump is too large to attach, but I will attach a 
couple screenshots of byte[] allocations taking much more space than I would 
expect. Is it possible that there is a memory leak here?

> New Consumer: java.lang.OutOfMemoryError: Direct buffer memory
> --
>
> Key: KAFKA-3552
> URL: https://issues.apache.org/jira/browse/KAFKA-3552
> Project: Kafka
>  Issue Type: Bug
>  Components: consumer
>Affects Versions: 0.9.0.1
>Reporter: Kanak Biscuitwala
>Assignee: Liquan Pei
> Attachments: Screen Shot 2016-04-13 at 11.56.05 AM.png, Screen Shot 
> 2016-04-13 at 2.17.48 PM.png
>
>
> I'm running Kafka's new consumer with message handlers that can sometimes 
> take a lot of time to return, and combining that with manual offset 
> management (to get at-least-once semantics). Since poll() is the only way to 
> heartbeat with the consumer, I have a thread that runs every 500 milliseconds 
> that does the following:
> 1) Pause all partitions
> 2) Call poll(0)
> 3) Resume all partitions
> For the record, all accesses to KafkaConsumer are protected by synchronized 
> blocks. This generally works, but I'm occasionally seeing messages like this:
> {code}
> java.lang.OutOfMemoryError: Direct buffer memory
> at java.nio.Bits.reserveMemory(Bits.java:658)
> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
> at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
> at sun.nio.ch.IOUtil.read(IOUtil.java:195)
> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
> at 
> org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
> at 
> org.a

[jira] [Updated] (KAFKA-3552) New Consumer: java.lang.OutOfMemoryError: Direct buffer memory

2016-04-13 Thread Kanak Biscuitwala (JIRA)

 [ 
https://issues.apache.org/jira/browse/KAFKA-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kanak Biscuitwala updated KAFKA-3552:
-
Attachment: Screen Shot 2016-04-13 at 11.56.05 AM.png
Screen Shot 2016-04-13 at 2.17.48 PM.png

> New Consumer: java.lang.OutOfMemoryError: Direct buffer memory
> --
>
> Key: KAFKA-3552
> URL: https://issues.apache.org/jira/browse/KAFKA-3552
> Project: Kafka
>  Issue Type: Bug
>  Components: consumer
>Affects Versions: 0.9.0.1
>Reporter: Kanak Biscuitwala
>Assignee: Liquan Pei
> Attachments: Screen Shot 2016-04-13 at 11.56.05 AM.png, Screen Shot 
> 2016-04-13 at 2.17.48 PM.png
>
>
> I'm running Kafka's new consumer with message handlers that can sometimes 
> take a lot of time to return, and combining that with manual offset 
> management (to get at-least-once semantics). Since poll() is the only way to 
> heartbeat with the consumer, I have a thread that runs every 500 milliseconds 
> that does the following:
> 1) Pause all partitions
> 2) Call poll(0)
> 3) Resume all partitions
> For the record, all accesses to KafkaConsumer are protected by synchronized 
> blocks. This generally works, but I'm occasionally seeing messages like this:
> {code}
> java.lang.OutOfMemoryError: Direct buffer memory
> at java.nio.Bits.reserveMemory(Bits.java:658)
> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
> at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
> at sun.nio.ch.IOUtil.read(IOUtil.java:195)
> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
> at 
> org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
> at 
> org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
> at 
> org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
> at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
> at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)
> at 
> org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:908)
> at 
> org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:853)
> {code}
> In addition, when I'm reporting offsets, I'm seeing:
> {code}
> java.lang.OutOfMemoryError: Direct buffer memory
> at java.nio.Bits.reserveMemory(Bits.java:658)
> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
> at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
> at sun.nio.ch.IOUtil.read(IOUtil.java:195)
> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
> at 
> org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
> at 
> org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
> at 
> org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
> at 
> org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
> at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
> at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:163)
> at 
> org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.commitOffsetsSync(ConsumerCoordinator.java:358)
> at 
> org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:968)
> {code}
> Given that I'm j

[jira] [Created] (KAFKA-3552) New Consumer: java.lang.OutOfMemoryError: Direct buffer memory

2016-04-12 Thread Kanak Biscuitwala (JIRA)
Kanak Biscuitwala created KAFKA-3552:


 Summary: New Consumer: java.lang.OutOfMemoryError: Direct buffer 
memory
 Key: KAFKA-3552
 URL: https://issues.apache.org/jira/browse/KAFKA-3552
 Project: Kafka
  Issue Type: Bug
  Components: consumer
Affects Versions: 0.9.0.1
Reporter: Kanak Biscuitwala
Assignee: Neha Narkhede


I'm running Kafka's new consumer with message handlers that can sometimes take 
a lot of time to return, and combining that with manual offset management (to 
get at-least-once semantics). Since poll() is the only way to heartbeat with 
the consumer, I have a thread that runs every 500 milliseconds that does the 
following:

1) Pause all partitions
2) Call poll(0)
3) Resume all partitions

For the record, all accesses to KafkaConsumer are protected by synchronized 
blocks. This generally works, but I'm occasionally seeing messages like this:

{code}
java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:658)
at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
at sun.nio.ch.IOUtil.read(IOUtil.java:195)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
at 
org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
at 
org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
at 
org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
at 
org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
at 
org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)
at 
org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:908)
at 
org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:853)
{code}

In addition, when I'm reporting offsets, I'm seeing:
{code}
java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:658)
at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
at sun.nio.ch.IOUtil.read(IOUtil.java:195)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
at 
org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
at 
org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
at 
org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
at 
org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
at 
org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)
at 
org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:163)
at 
org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.commitOffsetsSync(ConsumerCoordinator.java:358)
at 
org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:968)
{code}

Given that I'm just calling the library, this behavior is unexpected.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)