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
Lock contention in QueueImpl #837
Lock contention in QueueImpl #837
Conversation
Can one of the admins verify this patch? |
ok to test |
I have imported your commit into a branch on my fork... master-chamacie... I'm running a couple of tests on this before we merge it... I want to hear from Francisco and Andy on this one as well (after I finish the tests) |
Sorry for the internal link.. but just as an utility for us, this is the link for the full testsuite I'm running now: http://messaging-09.jbm.lab.bos.redhat.com:8080/job/hornetq-param/192/ will come back to you guys tomorrow on this after the test was finished, while I'm on sleep mode. |
No problem. btw: The other issue is the contention on ServerMessageImpl. |
I'm not sure what kind of tests are you doing... but we haven't seen these issues in most of the benchmarks. We certainly need locks in certain places, but they are part of the logic on distributing messages. But we will certainly improve things whenever we find better ways. But this code itself is not valid: Something wrong here: 07:18:07,134 ERROR [org.hornetq.core.server] HQ224016: Caught exception: java.lang.UnsupportedOperationException |
you should open a Developer's forum here.. you should start by sharing your tests: https://community.jboss.org/en/hornetq/dev?view=discussions I will close this as it's not possible to merge this at this point. We should have a dev discussion |
Ah that is the same error as the previous one but then at a different line of code. Apparently the quick tests don't cover cancelling a redistributor. Can you tell me the test suite or the test which is failing? Then I can verify a fix. Getting back to your request for sharing the tests. That is impossible as they contain proprietary code. I can tell you what we were are testing. I'll make a topic tomorrow to discuss this. |
You could easily fix the crashing case by disabling direct delivery. Ultimately you could use NIO which will take a non-blocking approach. those two options seems the proper fix for your case. Regarding the test you could write a single test to emulate what you are seeing. Usually when you raise an issue you have to provide a test. |
We moved to NIO. In our setup non-blocking was not performant enough. About the test, I wouldn't know how to write a 'small' failing integration test which could run in Maven. We can currently only reproduce this issue in our load test environment. I'm open for suggestions though :) I would need to run two separate consumers, one producer and a server. Then only one of the consumers should be delayed somehow, for instance by adding an incremental delay in Netty. Is there a similar test somewhere in HornetQ maybe? Getting back to which test fails, I still need to know which regression test is failing. Making a new failing test and fixing it will not ensure that the regression test which is now failing, will pass. |
It's a general failure on the main testsuite.. I think this is on the readme, but you can run the entire testsuite by doing this: mvn -Phudson-tests compile findbugs:check test |
Regarding the performance test.. you could write an isolated test for this performance issue you're seeing. |
Getting the problem to pop up in isolation is one of the problems, but I'll see what I can do. |
you're having multiple producers with multiple consumers with some failing I'm not really sure what's going on there. How many message / second are you getting? What transaction mode are you On Fri, Feb 8, 2013 at 9:18 AM, Steven Hulshof notifications@github.comwrote:
Clebert Suconic |
That's why I said we should move to dev-forum... this discussion will be lost on this PR.. I don't think it's very accessible for future references. |
Agreed. I'll open one later today or tomorrow. |
https://community.jboss.org/thread/221122 |
lets discuss the changes you want to make first.. then we can get to a PR after agreed. I could even download your branch and do tests.. lets keep the discussion on the forum until this is polished. |
This is the follow up on #831 .
I couldn't find a way to reopen the old PR, so a new one.
And I got a bit lost with Git. I'm learning that on the fly here, so I hope everything went fine. Although I'm not 100% sure.
In any case, I ran the test suite as specified with this change set and they all passed.