Denis Magda created IGNITE-2715:
-----------------------------------

             Summary: HotSpot in GridQueryProcessor.BinaryProperty.value() 
method
                 Key: IGNITE-2715
                 URL: https://issues.apache.org/jira/browse/IGNITE-2715
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 1.5.0.final
            Reporter: Denis Magda
            Assignee: Vladimir Ozerov
            Priority: Blocker
             Fix For: 1.6


The hotspot was detected in the following scenario.

1) Start a server node(s) with CacheConfiguration that stores binary objects of 
type T and has field A in the indexes;

2) Start client node that creates objects of type T using BinaryObjectBuilder 
but doesn't set value for field A at all;

3) Client populates the cache with created objects using IgniteDataStreamer at 
high rate.

If you connect to the server using Visual VM you'll see that threads from the 
public thread pull spend a lot of time waiting for a monitor and that 
{{GridQueryProcessor.BinaryProperty.value()}} is a hotspot.

The reason why the method above is the hotspot is because it calls 
{{U.warn(log, "Neither key nor value have property " +
                            "[propName=" + propName + ", key=" + key + ", val=" 
+ val + "]");}}

all the time converting a binary object to String. The warning is called 
because field A is not set in the binary representation.

This warning must be reworked in one of the following way:
- just print the name of the field that is not found;
- print the warning for the debug level only because cases there can be cases 
when a binary object doesn't have a field that is set in the indexes.

In addition revisit the rest of the code removing conversion of BinaryObject to 
String at places that could lead to performance degradation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to