Details
-
Improvement
-
Status: Done
-
Minor
-
Resolution: Done
-
None
-
None
Description
In the Storm Profiler, the ProfileBuilderBolt uses a separate thread to flush expired profiles. Expired profiles are those that have not received a message for an extended period of time. That period of time is called the profile time-to-live (profiler.ttl). This is done to avoid potential memory leaks.
This separate thread is scheduled using java.util.concurrent.ScheduledExecutorService#scheduleAtFixedRate. The documentation for scheduleAtFixedRate says that if an exception is thrown, subsequent executions will be suppressed. We do not want this to happen. If an exception occurs, we need to log it and continue, ensuring that expired profiles will continue to flush.
I have no direct proof that this has caused a problem, but it certainly is a potential issue that should be addressed.
Attachments
Issue Links
- links to