Affects Version/s: None
Fix Version/s: 1.4.4
JDK version and platform:IBM Java 1.5
Pasted my original email I used and the last email from JÃ¶rg. Also attached the entire email thread.
I am using XStream as part of my application for serializing classes. For one of the use cases, I have to serialize some of the classes implementing Externalizable interface. For my use case I would like to serialize them using native Java serialization. I found a link on the internet, http://old.nabble.com/How-to-remove-Externalizable-Converter-td22747484.html, which helped me address this issue and started using Reflection Converter for my Externalizable classes.
When testing the application, I am seeing that the application is spending lot of time in converter code during highly concurrent access. I can see that the problem is in the buildMap method of FieldDictionary, http://svn.codehaus.org/xstream/trunk/xstream/src/java/com/thoughtworks/xstream/converters/reflection/FieldDictionary.java
I was wondering if there is a better way to address my original issue? Is the performance for Reflection Converter expected to be bad when having highly concurrent environment?
I really appreciate any help/advice regarding this. Thanks for the help
Shravan (Sean) Pabba
Shravan Kumar wrote:
> Thanks Joe. Looking forward to a fix.
> Let me know if you need any additional info.
You're absolutely right, getting the cached element not required to be
synched here. Can you open a JIRA issue please, just to track the change?
It's different from
XSTR-635, since at that time the cache was realized with
a (non-working) WeakHashMap.
Thanks for fixing this - it showed-up in one of my tests as well as bottleneck.
Using your fix decreases the blocking situations a lot, however cannot resolve it completely, see attached monitoring statistics.
I will attach a fix which removes contention completely for read-access, however it uses ConcurrentHashMaps and as far as I know you want to keep Java1.4 compatibilty, which would not allow their usage.
Monitoring statistics, including JÃ¶rg's fix.
Patch using ConcurrentHashMaps
Fixed in trunk. Thanks for spotting.