[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-07-16 Thread Jun Rao (JIRA)

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

Jun Rao updated KAFKA-2241:
---
   Resolution: Fixed
Fix Version/s: 0.8.3
   Status: Resolved  (was: Patch Available)

Thanks for the patch. +1 and committed to trunk.

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Fix For: 0.8.3

 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 KAFKA-2241_2015-07-09_15:35:49.patch, KAFKA-2241_2015-07-13_13:30:07.patch, 
 KAFKA-2241_2015-07-13_14:51:42.patch, client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-07-13 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Attachment: KAFKA-2241_2015-07-13_13:30:07.patch

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 KAFKA-2241_2015-07-09_15:35:49.patch, KAFKA-2241_2015-07-13_13:30:07.patch, 
 client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-07-13 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Attachment: KAFKA-2241_2015-07-13_14:51:42.patch

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 KAFKA-2241_2015-07-09_15:35:49.patch, KAFKA-2241_2015-07-13_13:30:07.patch, 
 KAFKA-2241_2015-07-13_14:51:42.patch, client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-07-09 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Attachment: KAFKA-2241_2015-07-09_15:35:49.patch

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 KAFKA-2241_2015-07-09_15:35:49.patch, client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-07-09 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Status: Patch Available  (was: In Progress)

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 KAFKA-2241_2015-07-09_15:35:49.patch, client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-06-12 Thread Jun Rao (JIRA)

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

Jun Rao updated KAFKA-2241:
---
Reviewer: Jun Rao

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-06-11 Thread Aditya Auradkar (JIRA)

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

Aditya Auradkar updated KAFKA-2241:
---
Labels: quotas  (was: )

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
  Labels: quotas
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-06-03 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Attachment: KAFKA-2241_2015-06-03_15:30:35.patch

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
 Attachments: KAFKA-2241.patch, KAFKA-2241_2015-06-03_15:30:35.patch, 
 client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-06-02 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Attachment: KAFKA-2241.patch

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
 Attachments: KAFKA-2241.patch, client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-06-02 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Status: Patch Available  (was: Open)

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
 Attachments: KAFKA-2241.patch, client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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


[jira] [Updated] (KAFKA-2241) AbstractFetcherThread.shutdown() should not block on ReadableByteChannel.read(buffer)

2015-06-02 Thread Dong Lin (JIRA)

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

Dong Lin updated KAFKA-2241:

Attachment: client.java
server.java

Run server before client. Then check if channel.read() will unblock after the 
thread is interrupted.

 AbstractFetcherThread.shutdown() should not block on 
 ReadableByteChannel.read(buffer)
 -

 Key: KAFKA-2241
 URL: https://issues.apache.org/jira/browse/KAFKA-2241
 Project: Kafka
  Issue Type: Bug
Reporter: Dong Lin
Assignee: Dong Lin
 Attachments: client.java, server.java


 This is likely a bug from Java. This affects Kafka and here is the patch to 
 fix it.
 Here is the description of the bug. By description of SocketChannel in Java 7 
 Documentation. If another thread interrupts the current thread while the read 
 operation is in progress, the it should closes the channel and throw 
 ClosedByInterruptException. However, we find that interrupting the thread 
 will not unblock the channel immediately. Instead, it waits for response or 
 socket timeout before throwing an exception.
 This will cause problem in the following scenario. Suppose one 
 console_consumer_1 is reading from a topic, and due to quota delay or 
 whatever reason, it block on channel.read(buffer). At this moment, another 
 console_consumer_2 joins and triggers rebalance at console_consumer_1. But 
 consumer_1 will block waiting on the channel.read before it can release 
 partition ownership, causing consumer_2 to fail after a number of failed 
 attempts to obtain partition ownership.
 In other words, AbstractFetcherThread.shutdown() is not guaranteed to 
 shutdown due to this bug.
 The problem is confirmed with Java 1.7 and java 1.6. To check it by yourself, 
 you can use the attached server.java and client.java -- start the server 
 before the client and see if client unblock after interruption.



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