[ https://issues.apache.org/jira/browse/KAFKA-12668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jose Armando Garcia Sancio updated KAFKA-12668: ----------------------------------------------- Description: The current implementation of {{MockScheduler}} executes tasks in the same stack when {{schedule}} is called. This violates {{Log}}'s assumption since {{Log}} calls {{schedule}} while holding a lock. This can cause deadlock in tests. One solution is to change {{MockSchedule}} {{schedule}} method so that {{tick}} is not called. {{tick}} should be called by a stack (thread) that doesn't hold any locks. was: The current implementation of MockScheduler executes tasks in the same stack when schedule is called. This violates Log's assumption since Log calls schedule while holding a lock. This can cause deadlock in tests. One solution is to change MockSchedule schedule method so that tick is not called. tick should be called by a stack (thread) that doesn't hold any locks. > MockScheduler is not safe to use in concurrent code. > ---------------------------------------------------- > > Key: KAFKA-12668 > URL: https://issues.apache.org/jira/browse/KAFKA-12668 > Project: Kafka > Issue Type: Improvement > Components: unit tests > Reporter: Jose Armando Garcia Sancio > Priority: Major > > The current implementation of {{MockScheduler}} executes tasks in the same > stack when {{schedule}} is called. This violates {{Log}}'s assumption since > {{Log}} calls {{schedule}} while holding a lock. This can cause deadlock in > tests. > One solution is to change {{MockSchedule}} {{schedule}} method so that > {{tick}} is not called. {{tick}} should be called by a stack (thread) that > doesn't hold any locks. -- This message was sent by Atlassian Jira (v8.3.4#803005)