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

Threading fixes #1142

Closed
wants to merge 3 commits into from
Closed

Threading fixes #1142

wants to merge 3 commits into from

Conversation

@Smarre
Copy link

@Smarre Smarre commented Oct 21, 2013

Hi,

First commit about list() should be ok as it is, atleast as far as I know.

The second one, I don’t really know the cause, or how this really affects, but it did get me a bit further. I’m having some strange threading related problems, which mostly are just due activerecord being not really multithreading compatible, but some strange NPEs and other errors too. So I decided to include this fix too.

Smarre added 3 commits Oct 21, 2013
If two different threads accesses list() at same time,
WeakHashMap.java:882:in `nextEntry': java.util.ConcurrentModificationException
happens.
This is just here since I seem to get this error quite a bit.
I guess correct way would be to ensure somehow that there always
is the default group, but quick search didn’t give me any idea
how it can be missing in first place.
It seems that concurrent calls to this method causes
Exception in thread "RubyThread-3: .." java.util.ConcurrentModificationException.
@Smarre
Copy link
Author

@Smarre Smarre commented Oct 21, 2013

I added another synchronized function commit.

@headius
Copy link
Member

@headius headius commented Oct 21, 2013

These are good fixes but I think I know some better ways to solve them without hard synchronization everywhere. I'll credit you for the finds, though.

headius added a commit that referenced this issue Oct 21, 2013
See #1142. This supercedes a fix there.

I opted to use CopyOnWriteArrayList here for two reasons:

* It does not require synchronization, neither for access nor iter
* EventHooks should are only added or removed rarely
@headius
Copy link
Member

@headius headius commented Oct 21, 2013

I used your fix for RubyThreadGroup#list and the nil RubyThreadGroup issue and a different approach for the EventHooks list. Thank you!

@headius headius closed this Oct 21, 2013
@Smarre
Copy link
Author

@Smarre Smarre commented Oct 21, 2013

No problems, better have better fixes :) Thanks for merging.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants