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)