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

Jay Kreps updated KAFKA-597:
----------------------------

    Attachment: KAFKA-597-v5.patch

Thanks, new patch v5 addresses your comments:
- Improved javadoc
- This is actually good. I thought about it a bit and since I am making 
shutdown block the only time daemon vs non-daemon comes into play is if you 
don't call shutdown. If that is the case non-daemon threads will prevent 
garbage collection of the scheduler tasks and eventually block shutdown of the 
jvm, which seems unnecessary.
- The change to shutdownNow is not good. This will invoke interrupt on all 
threads, which is too aggressive. Better to let them finish. If we end up 
needing to schedule long-running tasks we can invent a new notification 
mechanism. I changed this so that we use normal shutdown instead.
                
> Refactor KafkaScheduler
> -----------------------
>
>                 Key: KAFKA-597
>                 URL: https://issues.apache.org/jira/browse/KAFKA-597
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 0.8.1
>            Reporter: Jay Kreps
>            Priority: Minor
>         Attachments: KAFKA-597-v1.patch, KAFKA-597-v2.patch, 
> KAFKA-597-v3.patch, KAFKA-597-v4.patch, KAFKA-597-v5.patch
>
>
> It would be nice to cleanup KafkaScheduler. Here is what I am thinking
> Extract the following interface:
> trait Scheduler {
>   def startup()
>   def schedule(fun: () => Unit, name: String, delayMs: Long = 0, periodMs: 
> Long): Scheduled
>   def shutdown(interrupt: Boolean = false)
> }
> class Scheduled {
>   def lastExecution: Long
>   def cancel()
> }
> We would have two implementations, KafkaScheduler and  MockScheduler. 
> KafkaScheduler would be a wrapper for ScheduledThreadPoolExecutor. 
> MockScheduler would only allow manual time advancement rather than using the 
> system clock, we would switch unit tests over to this.
> This change would be different from the existing scheduler in a the following 
> ways:
> 1. Would not return a ScheduledFuture (since this is useless)
> 2. shutdown() would be a blocking call. The current shutdown calls, don't 
> really do what people want.
> 3. We would remove the daemon thread flag, as I don't think it works.
> 4. It returns an object which let's you cancel the job or get the last 
> execution time.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to