[jira] [Created] (IGNITE-2715) HotSpot in GridQueryProcessor.BinaryProperty.value() method

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (IGNITE-2715) HotSpot in GridQueryProcessor.BinaryProperty.value() method

Anton Vinogradov (Jira)
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)