Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added timeout non-zero verification - fixes #776 #781

Merged
merged 1 commit into from
Aug 13, 2014
Merged

Added timeout non-zero verification - fixes #776 #781

merged 1 commit into from
Aug 13, 2014

Conversation

etcimon
Copy link
Contributor

@etcimon etcimon commented Aug 13, 2014

The pubsub listener was making the bstop call wait forever, because it was never listening in the first place: the 0 second Duration timeout was being triggered, rather than being considered as a "no timeout" value.

while (m_listening) {
t.rearm(1.msecs, false);
t.wait();
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this is left over from debugging?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the sleep timer creates a new one every msec, it reaches 4500 IDs by the time the server is stopped

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think that this is performance relevant? Timer creation is usually nothing more than assigning a few bytes of memory and incrementing a counter (plus some modulus calculation in the hash map).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not very relevant for performance, I was trying to figure out where all those timers came from when tracing and afterwards, I realized it would have been easier to debug it if it showed up as the same ID.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it is in fact a leftover from debugging ;)
I think we should solve this at a lower level. This just makes the code less readable for no obvious gain (apart from making timer debugging slightly easier when using this specific Redis functionality, which should be a highly uncommon case). There could for example be a special per-task default timer that is used by sleep.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I had a feeling the proposed solution would be at a lower level.

@extrawurst
Copy link
Contributor

looks good to me, @s-ludwig can you tag it after merging ?

@s-ludwig
Copy link
Member

@extrawurst: Will do.

Quick fix

Removed RedisDebug version for faster travis builds

Remove debug artifacts
@s-ludwig
Copy link
Member

Thanks @etcimon! Hopefully Travis is also reliable again now.

s-ludwig added a commit that referenced this pull request Aug 13, 2014
Add non-zero timeout verification. Fixes #776.

Also removes the RedisDebug version from the Redis integration test to sidestep Travis CI woes.
@s-ludwig s-ludwig merged commit 73884b4 into vibe-d:master Aug 13, 2014
@etcimon etcimon deleted the redis-pubsub-fix branch August 13, 2014 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants