You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "David Reiss (JIRA)" <ji...@apache.org> on 2009/06/04 02:34:07 UTC
[jira] Resolved: (THRIFT-469) TimerManager::add() bug when new
timeout < current timeout
[ https://issues.apache.org/jira/browse/THRIFT-469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Reiss resolved THRIFT-469.
--------------------------------
Resolution: Fixed
Fix Version/s: 0.2
> TimerManager::add() bug when new timeout < current timeout
> ----------------------------------------------------------
>
> Key: THRIFT-469
> URL: https://issues.apache.org/jira/browse/THRIFT-469
> Project: Thrift
> Issue Type: Bug
> Components: Library (C++)
> Affects Versions: 0.1
> Environment: Mac OS X 10.5.6
> Reporter: Rush Manbert
> Fix For: 0.2
>
> Attachments: TimerManagerPatchJira469.txt, TimerManagerTestsPatchJira469.txt
>
>
> The function:
> void TimerManager::add(shared_ptr<Runnable> task, int64_t timeout)
> inserts the new task into the taskMap_, then executes this code:
> if (taskCount_ == 1 || timeout < taskMap_.begin()->first) {
> monitor_.notify();
> }
> which doesn't call monitor_.notify() when the new task's timeout is < the current timeout, because the timeout portion of the test ends up testing timeout against itself.
> The TimerManagerTests::test00 doesn't reveal this problem when concurrency_test is built as part of the normal make. That's because there is a race between the TimerManager dispatcher starting and the test inserting the two test tasks. If the test delays for 1 second after adding orphanTask, then the test fails every time, because the dispatcher never gets broken out of the 10 second sleep he starts when orphanTask was inserted. I saw the error because I built a debug version of concurrency_test, which changed the timing enough to reveal the bug.
> I will attach patches for both the test and TimerManager.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.