Onur Karaman created KAFKA-2795:
-----------------------------------
Summary: potential NPE in GroupMetadataManager
Key: KAFKA-2795
URL: https://issues.apache.org/jira/browse/KAFKA-2795
Project: Kafka
Issue Type: Bug
Reporter: Onur Karaman
Assignee: Guozhang Wang
I didn't run the code, but I took a look at GroupMetadataManager.addGroup and
it looks like we can get a NullPointerException when a group is somehow removed
between the groupsCache.putIfNotExists and groupsCache.get lines and someone
tries to use the result of the addGroup. One way this can happen is by
interleaving GroupMetadataManager.addGroup and
GroupMetadataManager.removeGroupsForPartition.
Here's the scenario:
# thread-1 is in the middle of adding a group g which is in the offset topic
partition p. thread-1 already hit the groupsCache.putIfNotExists line in
GroupMetadataManager.addGroup
# thread-2 is in the middle of migrating all groups for partition p. thread-2
is in GroupMetadataManager.removeGroupsForPartition and called
groupsCache.remove("g").
# thread-1 now executes groupsCache.get("g"), which returns null since it's now
gone.
# thread-1 now goes back to the GroupCoordinator doJoinGroup with a null
GroupMetadata and then tries to do a group synchronized {...}, resulting in an
NPE.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)