From d3cf50c50129eebd85f8640228e431786ca8f999 Mon Sep 17 00:00:00 2001 From: Max Oleynik Date: Thu, 17 Jan 2019 23:48:01 +0300 Subject: [PATCH] Review fixes --- LOADTEST.md | 41 + Profiling/Stage 5/put_get_2_3_2m.svg | 3431 +++++++++++++++++ Profiling/Stage 5/put_get_3_3_2m.svg | 3315 ++++++++++++++++ .../java/ru/mail/polis/maxciv/KVDaoImpl.java | 10 +- .../ru/mail/polis/maxciv/KVServiceImpl.java | 3 +- .../ru/mail/polis/maxciv/StorageService.java | 3 +- .../ru/mail/polis/maxciv/cluster/Node.java | 8 +- .../polis/maxciv/cluster/NodesManager.java | 37 +- .../mail/polis/maxciv/future/DeleteCall.java | 6 +- .../ru/mail/polis/maxciv/future/GetCall.java | 6 +- .../ru/mail/polis/maxciv/future/PutCall.java | 6 +- 11 files changed, 6837 insertions(+), 29 deletions(-) create mode 100644 Profiling/Stage 5/put_get_2_3_2m.svg create mode 100644 Profiling/Stage 5/put_get_3_3_2m.svg diff --git a/LOADTEST.md b/LOADTEST.md index fc8263d2..d545205c 100644 --- a/LOADTEST.md +++ b/LOADTEST.md @@ -280,3 +280,44 @@ Running 2m test @ http://localhost:8080 Requests/sec: 22184.47 Transfer/sec: 1.63MB ``` + + +## После ревью-фиксов +#### PUT/GET 3/3 +[Flame Graph by async-profiler](https://github.com/MaxCiv/2018-highload-kv/blob/master/Profiling/Stage%205/put_get_3_3_2m.svg) +``` +$ wrk --latency -c4 -d2m -s script.lua http://localhost:8080 +Running 2m test @ http://localhost:8080 + 2 threads and 4 connections + Thread Stats Avg Stdev Max +/- Stdev + Latency 223.43us 267.14us 10.86ms 94.45% + Req/Sec 10.12k 753.51 12.08k 80.83% + Latency Distribution + 50% 180.00us + 75% 217.00us + 90% 317.00us + 99% 1.46ms + 2415831 requests in 2.00m, 177.40MB read + Non-2xx or 3xx responses: 603958 +Requests/sec: 20130.97 +Transfer/sec: 1.48MB +``` + +#### PUT/GET 2/3 +[Flame Graph by async-profiler](https://github.com/MaxCiv/2018-highload-kv/blob/master/Profiling/Stage%205/put_get_2_3_2m.svg) +``` +$ wrk --latency -c4 -d2m -s script.lua http://localhost:8080 +Running 2m test @ http://localhost:8080 + 2 threads and 4 connections + Thread Stats Avg Stdev Max +/- Stdev + Latency 191.47us 201.76us 6.62ms 94.99% + Req/Sec 11.40k 0.96k 12.59k 93.50% + Latency Distribution + 50% 166.00us + 75% 191.00us + 90% 233.00us + 99% 1.25ms + 2721903 requests in 2.00m, 199.88MB read +Requests/sec: 22679.68 +Transfer/sec: 1.67MB +``` diff --git a/Profiling/Stage 5/put_get_2_3_2m.svg b/Profiling/Stage 5/put_get_2_3_2m.svg new file mode 100644 index 00000000..87da7b75 --- /dev/null +++ b/Profiling/Stage 5/put_get_2_3_2m.svg @@ -0,0 +1,3431 @@ + + + + + + +Flame Graph + +Reset Zoom +Search + + +all (49,049 samples, 100.00%) +all + + +OptoRuntime::new_array_C(Klass*, int, JavaThread*) (242 samples, 0.49%) + + + +TypeArrayKlass::allocate_common(int, bool, Thread*) (197 samples, 0.40%) + + + +CollectedHeap::array_allocate(KlassHandle, int, int, Thread*) (189 samples, 0.39%) + + + +CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*) (80 samples, 0.16%) + + + +CollectedHeap::allocate_from_tlab_slow(KlassHandle, Thread*, unsigned long) (56 samples, 0.11%) + + + +OptoRuntime::new_array_nozero_C(Klass*, int, JavaThread*) (128 samples, 0.26%) + + + +TypeArrayKlass::allocate_common(int, bool, Thread*) (108 samples, 0.22%) + + + +CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*) (82 samples, 0.17%) + + + +CollectedHeap::allocate_from_tlab_slow(KlassHandle, Thread*, unsigned long) (61 samples, 0.12%) + + + +OptoRuntime::new_instance_C(Klass*, JavaThread*) (114 samples, 0.23%) + + + +InstanceKlass::allocate_instance(Thread*) (94 samples, 0.19%) + + + +CollectedHeap::obj_allocate(KlassHandle, int, Thread*) (88 samples, 0.18%) + + + +CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*) (77 samples, 0.16%) + + + +CollectedHeap::allocate_from_tlab_slow(KlassHandle, Thread*, unsigned long) (55 samples, 0.11%) + + + +SharedRuntime::complete_monitor_locking_C(oopDesc*, BasicLock*, JavaThread*) (578 samples, 1.18%) + + + +ObjectMonitor::enter(Thread*) (530 samples, 1.08%) + + + +ObjectMonitor::TrySpin_VaryDuration(Thread*) (430 samples, 0.88%) + + + +ObjectMonitor::NotRunnable(Thread*, Thread*) (167 samples, 0.34%) + + + +SpinPause (49 samples, 0.10%) + + + +java/util/concurrent/ForkJoinWorkerThread.run (18,829 samples, 38.39%) +java/util/concurrent/ForkJoinWorkerThread.run + + +java/util/concurrent/ForkJoinPool.runWorker (18,829 samples, 38.39%) +java/util/concurrent/ForkJoinPool.runWorker + + +java/util/concurrent/ForkJoinPool$WorkQueue.runTask (11,246 samples, 22.93%) +java/util/concurrent/ForkJoinPool$Wo.. + + +java/util/concurrent/ForkJoinTask.doExec (11,206 samples, 22.85%) +java/util/concurrent/ForkJoinTask.do.. + + +java/util/concurrent/ForkJoinTask$AdaptedCallable.exec (130 samples, 0.27%) + + + +ru/mail/polis/maxciv/future/GetCall.call (101 samples, 0.21%) + + + +ru/mail/polis/maxciv/future/GetCall.call (101 samples, 0.21%) + + + +ru/mail/polis/maxciv/future/GetCall.get (83 samples, 0.17%) + + + +java/util/concurrent/ForkJoinTask$RunnableExecuteAction.exec (11,066 samples, 22.56%) +java/util/concurrent/ForkJoinTask$Ru.. + + +java/util/concurrent/FutureTask.run (11,066 samples, 22.56%) +java/util/concurrent/FutureTask.run + + +java/util/concurrent/Executors$RunnableAdapter.call (10,149 samples, 20.69%) +java/util/concurrent/Executors$R.. + + +java/util/concurrent/ForkJoinTask$AdaptedCallable.run (10,149 samples, 20.69%) +java/util/concurrent/ForkJoinTas.. + + +java/util/concurrent/ForkJoinTask.invoke (10,149 samples, 20.69%) +java/util/concurrent/ForkJoinTas.. + + +java/util/concurrent/ForkJoinTask.doInvoke (10,149 samples, 20.69%) +java/util/concurrent/ForkJoinTas.. + + +java/util/concurrent/ForkJoinTask.doExec (10,149 samples, 20.69%) +java/util/concurrent/ForkJoinTas.. + + +java/util/concurrent/ForkJoinTask$AdaptedCallable.exec (10,148 samples, 20.69%) +java/util/concurrent/ForkJoinTas.. + + +ru/mail/polis/maxciv/future/GetCall.call (4,337 samples, 8.84%) +ru/mail/poli.. + + +ru/mail/polis/maxciv/future/GetCall.call (4,337 samples, 8.84%) +ru/mail/poli.. + + +ru/mail/polis/maxciv/future/GetCall.get (3,455 samples, 7.04%) +ru/mail/p.. + + +one/nio/http/HttpClient.get (3,450 samples, 7.03%) +one/nio/h.. + + +one/nio/http/HttpClient.invoke (3,435 samples, 7.00%) +one/nio/h.. + + +one/nio/http/HttpClient$ResponseReader.<init> (2,123 samples, 4.33%) +one/n.. + + +one/nio/net/JavaSocket.read (2,122 samples, 4.33%) +one/n.. + + +sun/nio/ch/SocketChannelImpl.read (2,108 samples, 4.30%) +sun/n.. + + +sun/nio/ch/IOUtil.read (2,075 samples, 4.23%) +sun/n.. + + +sun/nio/ch/IOUtil.readIntoNativeBuffer (1,998 samples, 4.07%) +sun/.. + + +sun/nio/ch/SocketDispatcher.read (1,998 samples, 4.07%) +sun/.. + + +sun/nio/ch/FileDispatcherImpl.read0 (1,998 samples, 4.07%) +sun/.. + + +read (1,861 samples, 3.79%) +read + + +one/nio/http/HttpClient$ResponseReader.readResponse (116 samples, 0.24%) + + + +one/nio/http/HttpClient$ResponseReader.readLine (73 samples, 0.15%) + + + +one/nio/util/Utf8.read (59 samples, 0.12%) + + + +one/nio/util/Utf8.read (59 samples, 0.12%) + + + +one/nio/http/Request.toBytes (68 samples, 0.14%) + + + +one/nio/util/ByteArrayBuilder.append (48 samples, 0.10%) + + + +one/nio/net/JavaSocket.writeFully (1,038 samples, 2.12%) +o.. + + +sun/nio/ch/SocketChannelImpl.write (1,035 samples, 2.11%) +s.. + + +sun/nio/ch/IOUtil.write (1,008 samples, 2.06%) +s.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (911 samples, 1.86%) +s.. + + +sun/nio/ch/SocketDispatcher.write (907 samples, 1.85%) +s.. + + +sun/nio/ch/FileDispatcherImpl.write0 (907 samples, 1.85%) +s.. + + +write (862 samples, 1.76%) + + + +sun/nio/ch/Util.getTemporaryDirectBuffer (65 samples, 0.13%) + + + +ru/mail/polis/maxciv/future/GetCall.localGet (881 samples, 1.80%) +r.. + + +ru/mail/polis/maxciv/StorageService.getObject (878 samples, 1.79%) +r.. + + +ru/mail/polis/maxciv/KVDaoImpl.getObject (833 samples, 1.70%) + + + +org/dizitart/no2/objects/DefaultObjectRepository.find (436 samples, 0.89%) + + + +org/dizitart/no2/internals/DefaultNitriteCollection.find (434 samples, 0.88%) + + + +org/dizitart/no2/internals/NitriteService.find (429 samples, 0.87%) + + + +org/dizitart/no2/internals/SearchService.find (428 samples, 0.87%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (427 samples, 0.87%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (341 samples, 0.70%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (84 samples, 0.17%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (84 samples, 0.17%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (52 samples, 0.11%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (151 samples, 0.31%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (148 samples, 0.30%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (125 samples, 0.25%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (100 samples, 0.20%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (75 samples, 0.15%) + + + +org/h2/mvstore/MVMap.getName (75 samples, 0.15%) + + + +org/h2/mvstore/MVStore.getMapName (75 samples, 0.15%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (106 samples, 0.22%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (105 samples, 0.21%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (88 samples, 0.18%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (77 samples, 0.16%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (67 samples, 0.14%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (48 samples, 0.10%) + + + +org/h2/mvstore/MVMap.getName (48 samples, 0.10%) + + + +org/h2/mvstore/MVStore.getMapName (47 samples, 0.10%) + + + +org/dizitart/no2/util/ValidationUtils.validateSearchTerm (47 samples, 0.10%) + + + +org/dizitart/no2/mapper/GenericMapper.isValueType (43 samples, 0.09%) + + + +org/dizitart/no2/mapper/JacksonFacade.isValueType (43 samples, 0.09%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (43 samples, 0.09%) + + + +org/dizitart/no2/objects/ObjectCursor.firstOrDefault (224 samples, 0.46%) + + + +org/dizitart/no2/util/Iterables.firstOrDefault (223 samples, 0.45%) + + + +org/dizitart/no2/objects/ObjectCursor$ObjectCursorIterator.next (216 samples, 0.44%) + + + +org/dizitart/no2/mapper/AbstractMapper.asObject (176 samples, 0.36%) + + + +org/dizitart/no2/mapper/GenericMapper.asObjectInternal (176 samples, 0.36%) + + + +org/dizitart/no2/mapper/JacksonFacade.asObject (175 samples, 0.36%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (175 samples, 0.36%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (173 samples, 0.35%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.deserialize (67 samples, 0.14%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.vanillaDeserialize (59 samples, 0.12%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (80 samples, 0.16%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (77 samples, 0.16%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (77 samples, 0.16%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (77 samples, 0.16%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serializeFields (69 samples, 0.14%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (162 samples, 0.33%) + + + +java/security/MessageDigest.digest (100 samples, 0.20%) + + + +java/security/MessageDigest.digest (98 samples, 0.20%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (98 samples, 0.20%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (98 samples, 0.20%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (92 samples, 0.19%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (83 samples, 0.17%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (81 samples, 0.17%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (71 samples, 0.14%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (62 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (62 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.encode (54 samples, 0.11%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (42 samples, 0.09%) + + + +ru/mail/polis/maxciv/future/PutCall.call (5,810 samples, 11.85%) +ru/mail/polis/max.. + + +ru/mail/polis/maxciv/future/PutCall.call (5,810 samples, 11.85%) +ru/mail/polis/max.. + + +ru/mail/polis/maxciv/future/PutCall.localPut (2,724 samples, 5.55%) +ru/mail.. + + +ru/mail/polis/maxciv/StorageService.putObject (2,724 samples, 5.55%) +ru/mail.. + + +ru/mail/polis/maxciv/KVDaoImpl.upsert (2,703 samples, 5.51%) +ru/mail.. + + +org/dizitart/no2/objects/DefaultObjectRepository.update (2,531 samples, 5.16%) +org/di.. + + +org/dizitart/no2/internals/DefaultNitriteCollection.update (2,318 samples, 4.73%) +org/d.. + + +org/dizitart/no2/internals/NitriteService.update (2,315 samples, 4.72%) +org/d.. + + +org/dizitart/no2/internals/DataService.update (2,308 samples, 4.71%) +org/d.. + + +java/lang/StringBuilder.append (482 samples, 0.98%) + + + +java/lang/AbstractStringBuilder.append (83 samples, 0.17%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (44 samples, 0.09%) + + + +java/lang/String.valueOf (385 samples, 0.78%) + + + +java/util/AbstractMap.toString (301 samples, 0.61%) + + + +java/lang/StringBuilder.append (275 samples, 0.56%) + + + +java/lang/String.valueOf (134 samples, 0.27%) + + + +java/lang/Object.toString (87 samples, 0.18%) + + + +java/lang/Object.hashCode (47 samples, 0.10%) + + + +java/lang/StringBuilder.append (112 samples, 0.23%) + + + +java/lang/AbstractStringBuilder.append (104 samples, 0.21%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (70 samples, 0.14%) + + + +org/dizitart/no2/internals/WriteResultImpl.toString (47 samples, 0.10%) + + + +java/lang/StringBuilder.append (42 samples, 0.09%) + + + +org/dizitart/no2/Document.<init> (60 samples, 0.12%) + + + +java/util/LinkedHashMap.<init> (60 samples, 0.12%) + + + +java/util/HashMap.putMapEntries (56 samples, 0.11%) + + + +org/dizitart/no2/Document.getSource (75 samples, 0.15%) + + + +java/util/HashMap.containsKey (74 samples, 0.15%) + + + +java/util/HashMap.getNode (73 samples, 0.15%) + + + +SharedRuntime::complete_monitor_locking_C(oopDesc*, BasicLock*, JavaThread*) (64 samples, 0.13%) + + + +ObjectMonitor::enter(Thread*) (64 samples, 0.13%) + + + +ObjectMonitor::EnterI(Thread*) (62 samples, 0.13%) + + + +ObjectMonitor::TrySpin_VaryDuration(Thread*) (47 samples, 0.10%) + + + +org/dizitart/no2/internals/DataService.notify (247 samples, 0.50%) + + + +java/lang/StringBuilder.append (227 samples, 0.46%) + + + +java/lang/String.valueOf (204 samples, 0.42%) + + + +java/util/AbstractCollection.toString (204 samples, 0.42%) + + + +java/lang/StringBuilder.append (197 samples, 0.40%) + + + +java/lang/String.valueOf (160 samples, 0.33%) + + + +org/dizitart/no2/event/ChangedItem.toString (160 samples, 0.33%) + + + +java/lang/StringBuilder.append (157 samples, 0.32%) + + + +java/lang/String.valueOf (111 samples, 0.23%) + + + +java/util/AbstractMap.toString (111 samples, 0.23%) + + + +java/lang/StringBuilder.append (97 samples, 0.20%) + + + +java/lang/String.valueOf (45 samples, 0.09%) + + + +java/lang/StringBuilder.append (49 samples, 0.10%) + + + +java/lang/AbstractStringBuilder.append (43 samples, 0.09%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (65 samples, 0.13%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (65 samples, 0.13%) + + + +org/dizitart/no2/store/NitriteMVMap.get (48 samples, 0.10%) + + + +org/h2/mvstore/MVMap.get (48 samples, 0.10%) + + + +org/h2/mvstore/MVMap.binarySearch (47 samples, 0.10%) + + + +org/dizitart/no2/internals/IndexingService.refreshIndexEntry (478 samples, 0.97%) + + + +org/dizitart/no2/internals/IndexMetaService.findIndex (388 samples, 0.79%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (362 samples, 0.74%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (299 samples, 0.61%) + + + +java/lang/StringBuilder.append (42 samples, 0.09%) + + + +java/lang/AbstractStringBuilder.append (42 samples, 0.09%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (233 samples, 0.48%) + + + +org/h2/mvstore/MVMap.getName (233 samples, 0.48%) + + + +org/h2/mvstore/MVStore.getMapName (233 samples, 0.48%) + + + +org/h2/mvstore/DataUtils.getMapName (128 samples, 0.26%) + + + +org/h2/mvstore/DataUtils.getFromMap (122 samples, 0.25%) + + + +org/h2/mvstore/DataUtils.parseMapValue (98 samples, 0.20%) + + + +java/lang/StringBuilder.append (48 samples, 0.10%) + + + +java/lang/AbstractStringBuilder.append (48 samples, 0.10%) + + + +org/h2/mvstore/MVMap.getMapKey (68 samples, 0.14%) + + + +org/dizitart/no2/store/NitriteMVStore.openMap (59 samples, 0.12%) + + + +org/h2/mvstore/MVStore.openMap (57 samples, 0.12%) + + + +org/h2/mvstore/MVStore.openMap (57 samples, 0.12%) + + + +org/dizitart/no2/util/DocumentUtils.getFields (54 samples, 0.11%) + + + +org/dizitart/no2/util/DocumentUtils.getFieldsInternal (54 samples, 0.11%) + + + +org/dizitart/no2/internals/SearchService.find (439 samples, 0.90%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (424 samples, 0.86%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (377 samples, 0.77%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (86 samples, 0.18%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (72 samples, 0.15%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (44 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (133 samples, 0.27%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (126 samples, 0.26%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (121 samples, 0.25%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (99 samples, 0.20%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (80 samples, 0.16%) + + + +org/h2/mvstore/MVMap.getName (80 samples, 0.16%) + + + +org/h2/mvstore/MVStore.getMapName (80 samples, 0.16%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (155 samples, 0.32%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (148 samples, 0.30%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (113 samples, 0.23%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (97 samples, 0.20%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (76 samples, 0.15%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (58 samples, 0.12%) + + + +org/h2/mvstore/MVMap.getName (58 samples, 0.12%) + + + +org/h2/mvstore/MVStore.getMapName (58 samples, 0.12%) + + + +org/dizitart/no2/store/NitriteMVMap.put (238 samples, 0.49%) + + + +org/dizitart/no2/store/NitriteMVMap.updateAttributes (141 samples, 0.29%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (93 samples, 0.19%) + + + +org/h2/mvstore/MVMap.getName (93 samples, 0.19%) + + + +org/h2/mvstore/MVStore.getMapName (93 samples, 0.19%) + + + +org/h2/mvstore/DataUtils.getMapName (51 samples, 0.10%) + + + +org/h2/mvstore/DataUtils.getFromMap (48 samples, 0.10%) + + + +org/h2/mvstore/DataUtils.parseMapValue (43 samples, 0.09%) + + + +org/h2/mvstore/MVMap.put (97 samples, 0.20%) + + + +org/h2/mvstore/MVMap.put (83 samples, 0.17%) + + + +org/h2/mvstore/MVMap.put (47 samples, 0.10%) + + + +org/dizitart/no2/objects/DefaultObjectRepository.asDocument (206 samples, 0.42%) + + + +org/dizitart/no2/util/ObjectUtils.toDocument (206 samples, 0.42%) + + + +org/dizitart/no2/mapper/AbstractMapper.asDocument (206 samples, 0.42%) + + + +org/dizitart/no2/mapper/GenericMapper.asDocumentInternal (206 samples, 0.42%) + + + +org/dizitart/no2/mapper/JacksonFacade.asDocument (206 samples, 0.42%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (137 samples, 0.28%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (132 samples, 0.27%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (57 samples, 0.12%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (54 samples, 0.11%) + + + +com/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer.deserializeObject (50 samples, 0.10%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (54 samples, 0.11%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (53 samples, 0.11%) + + + +com/fasterxml/jackson/databind/ser/BeanSerializer.serialize (53 samples, 0.11%) + + + +com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.serializeFields (48 samples, 0.10%) + + + +com/fasterxml/jackson/databind/ser/BeanPropertyWriter.serializeAsField (44 samples, 0.09%) + + + +org/dizitart/no2/mapper/JacksonFacade.loadDocument (66 samples, 0.13%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (148 samples, 0.30%) + + + +java/security/MessageDigest.digest (98 samples, 0.20%) + + + +java/security/MessageDigest.digest (87 samples, 0.18%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (87 samples, 0.18%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (86 samples, 0.18%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (85 samples, 0.17%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (70 samples, 0.14%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (69 samples, 0.14%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (58 samples, 0.12%) + + + +ru/mail/polis/maxciv/future/PutCall.put (3,083 samples, 6.29%) +ru/mail/.. + + +one/nio/http/HttpClient.put (3,078 samples, 6.28%) +one/nio/.. + + +one/nio/http/HttpClient.invoke (3,058 samples, 6.23%) +one/nio/.. + + +one/nio/http/HttpClient$ResponseReader.<init> (1,845 samples, 3.76%) +one/.. + + +one/nio/net/JavaSocket.read (1,845 samples, 3.76%) +one/.. + + +sun/nio/ch/SocketChannelImpl.read (1,831 samples, 3.73%) +sun/.. + + +sun/nio/ch/IOUtil.read (1,810 samples, 3.69%) +sun/.. + + +sun/nio/ch/IOUtil.readIntoNativeBuffer (1,766 samples, 3.60%) +sun/.. + + +sun/nio/ch/SocketDispatcher.read (1,766 samples, 3.60%) +sun/.. + + +sun/nio/ch/FileDispatcherImpl.read0 (1,766 samples, 3.60%) +sun/.. + + +read (1,670 samples, 3.40%) +read + + +one/nio/http/HttpClient$ResponseReader.readResponse (87 samples, 0.18%) + + + +one/nio/http/HttpClient$ResponseReader.readLine (53 samples, 0.11%) + + + +one/nio/util/Utf8.read (43 samples, 0.09%) + + + +one/nio/util/Utf8.read (43 samples, 0.09%) + + + +one/nio/http/Request.toBytes (72 samples, 0.15%) + + + +one/nio/util/ByteArrayBuilder.append (47 samples, 0.10%) + + + +one/nio/net/JavaSocket.writeFully (962 samples, 1.96%) +o.. + + +sun/nio/ch/SocketChannelImpl.write (957 samples, 1.95%) +s.. + + +sun/nio/ch/IOUtil.write (925 samples, 1.89%) +s.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (872 samples, 1.78%) + + + +sun/nio/ch/SocketDispatcher.write (864 samples, 1.76%) + + + +sun/nio/ch/FileDispatcherImpl.write0 (864 samples, 1.76%) + + + +write (815 samples, 1.66%) + + + +one/nio/pool/Pool.borrowObject (51 samples, 0.10%) + + + +java/util/concurrent/FutureTask.set (917 samples, 1.87%) +j.. + + +java/util/concurrent/FutureTask.finishCompletion (917 samples, 1.87%) +j.. + + +java/util/concurrent/ExecutorCompletionService$QueueingFuture.done (917 samples, 1.87%) +j.. + + +java/util/AbstractQueue.add (917 samples, 1.87%) +j.. + + +java/util/concurrent/LinkedBlockingQueue.offer (917 samples, 1.87%) +j.. + + +java/util/concurrent/LinkedBlockingQueue.signalNotEmpty (908 samples, 1.85%) +j.. + + +java/util/concurrent/locks/ReentrantLock.unlock (891 samples, 1.82%) +j.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer.release (891 samples, 1.82%) +j.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer.unparkSuccessor (886 samples, 1.81%) +j.. + + +java/util/concurrent/locks/LockSupport.unpark (886 samples, 1.81%) +j.. + + +sun/misc/Unsafe.unpark (886 samples, 1.81%) +s.. + + +Unsafe_Unpark (811 samples, 1.65%) + + + +Parker::unpark() (699 samples, 1.43%) + + + +__psynch_cvsignal (655 samples, 1.34%) + + + +java/util/concurrent/ForkJoinPool.awaitWork (6,857 samples, 13.98%) +java/util/concurrent/.. + + +sun/misc/Unsafe.park (6,807 samples, 13.88%) +sun/misc/Unsafe.park + + +Unsafe_Park (6,399 samples, 13.05%) +Unsafe_Park + + +Parker::park(bool, long) (6,198 samples, 12.64%) +Parker::park(bool, .. + + +JavaThread::handle_special_suspend_equivalent_condition() (43 samples, 0.09%) + + + +__psynch_cvwait (5,755 samples, 11.73%) +__psynch_cvwait + + +_pthread_cond_wait (268 samples, 0.55%) + + + +_pthread_mutex_firstfit_lock_slow (203 samples, 0.41%) + + + +__psynch_mutexwait (200 samples, 0.41%) + + + +java/util/concurrent/ForkJoinPool.scan (699 samples, 1.43%) + + + +java/util/concurrent/ForkJoinPool.signalWork (510 samples, 1.04%) + + + +sun/misc/Unsafe.unpark (505 samples, 1.03%) + + + +Unsafe_Unpark (473 samples, 0.96%) + + + +Parker::unpark() (403 samples, 0.82%) + + + +__psynch_cvsignal (386 samples, 0.79%) + + + +one/nio/server/SelectorThread.run (27,734 samples, 56.54%) +one/nio/server/SelectorThread.run + + +one/nio/net/JavaSelector.select (7,855 samples, 16.01%) +one/nio/net/JavaSelector.. + + +one/nio/net/JavaSelector.iteratorFor (55 samples, 0.11%) + + + +sun/nio/ch/SelectorImpl.select (7,752 samples, 15.80%) +sun/nio/ch/SelectorImpl... + + +sun/nio/ch/SelectorImpl.select (7,752 samples, 15.80%) +sun/nio/ch/SelectorImpl... + + +sun/nio/ch/SelectorImpl.lockAndDoSelect (7,752 samples, 15.80%) +sun/nio/ch/SelectorImpl... + + +sun/nio/ch/KQueueSelectorImpl.doSelect (7,687 samples, 15.67%) +sun/nio/ch/KQueueSelecto.. + + +java/nio/channels/spi/AbstractSelector.begin (60 samples, 0.12%) + + + +java/nio/channels/spi/AbstractSelector.end (60 samples, 0.12%) + + + +java/nio/channels/spi/AbstractInterruptibleChannel.blockedOn (60 samples, 0.12%) + + + +sun/nio/ch/KQueueArrayWrapper.poll (7,433 samples, 15.15%) +sun/nio/ch/KQueueArrayW.. + + +sun/nio/ch/KQueueArrayWrapper.kevent0 (7,424 samples, 15.14%) +sun/nio/ch/KQueueArrayW.. + + +Java_sun_nio_ch_KQueueArrayWrapper_kevent0 (59 samples, 0.12%) + + + +kevent (6,901 samples, 14.07%) +kevent + + +sun/nio/ch/KQueueSelectorImpl.updateSelectedKeys (90 samples, 0.18%) + + + +one/nio/net/Session.process (19,798 samples, 40.36%) +one/nio/net/Session.process + + +one/nio/http/HttpSession.processRead (19,744 samples, 40.25%) +one/nio/http/HttpSession.processRead + + +one/nio/http/HttpSession.processHttpBuffer (18,162 samples, 37.03%) +one/nio/http/HttpSession.processHttpBuffer + + +one/nio/http/HttpSession.handleParsedRequest (17,585 samples, 35.85%) +one/nio/http/HttpSession.handleParsedRequest + + +one/nio/http/HttpServer.handleRequest (17,585 samples, 35.85%) +one/nio/http/HttpServer.handleRequest + + +RequestHandler1_handleEntity.handleRequest (9,101 samples, 18.55%) +RequestHandler1_handleEntity... + + +one/nio/http/HttpSession.sendResponse (1,377 samples, 2.81%) +on.. + + +one/nio/http/HttpSession.writeResponse (1,334 samples, 2.72%) +on.. + + +one/nio/http/Response.toBytes (48 samples, 0.10%) + + + +one/nio/net/Session.write (1,286 samples, 2.62%) +on.. + + +one/nio/net/Session.write (1,286 samples, 2.62%) +on.. + + +one/nio/net/Session.write (1,279 samples, 2.61%) +on.. + + +one/nio/net/Session$ArrayQueueItem.write (1,247 samples, 2.54%) +on.. + + +one/nio/net/JavaSocket.write (1,243 samples, 2.53%) +on.. + + +sun/nio/ch/SocketChannelImpl.write (1,238 samples, 2.52%) +su.. + + +sun/nio/ch/IOUtil.write (1,209 samples, 2.46%) +su.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (1,111 samples, 2.27%) +s.. + + +sun/nio/ch/SocketDispatcher.write (1,107 samples, 2.26%) +s.. + + +sun/nio/ch/FileDispatcherImpl.write0 (1,107 samples, 2.26%) +s.. + + +write (1,052 samples, 2.14%) +w.. + + +sun/nio/ch/Util.getTemporaryDirectBuffer (64 samples, 0.13%) + + + +one/nio/http/Request.getParameter (58 samples, 0.12%) + + + +ru/mail/polis/maxciv/KVServiceImpl.handleEntity (7,666 samples, 15.63%) +ru/mail/polis/maxciv/KVS.. + + +ru/mail/polis/maxciv/cluster/NodesManager.handleEntityRequest (7,666 samples, 15.63%) +ru/mail/polis/maxciv/clu.. + + +ru/mail/polis/maxciv/cluster/NodesManager.getObject (3,660 samples, 7.46%) +ru/mail/po.. + + +java/util/concurrent/ExecutorCompletionService.take (2,651 samples, 5.40%) +java/ut.. + + +java/util/concurrent/LinkedBlockingQueue.take (2,648 samples, 5.40%) +java/ut.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await (2,631 samples, 5.36%) +java/ut.. + + +java/util/concurrent/locks/LockSupport.park (2,601 samples, 5.30%) +java/u.. + + +sun/misc/Unsafe.park (2,601 samples, 5.30%) +sun/mi.. + + +Unsafe_Park (2,447 samples, 4.99%) +Unsafe.. + + +Parker::park(bool, long) (2,372 samples, 4.84%) +Parker.. + + +__psynch_cvwait (2,247 samples, 4.58%) +__psy.. + + +_pthread_cond_wait (51 samples, 0.10%) + + + +one/nio/http/Response.getHeader (43 samples, 0.09%) + + + +ru/mail/polis/maxciv/cluster/NodesManager.getNodesSortedByDistance (121 samples, 0.25%) + + + +java/util/stream/ReferencePipeline.collect (94 samples, 0.19%) + + + +java/util/stream/AbstractPipeline.evaluate (93 samples, 0.19%) + + + +java/util/stream/ReduceOps$ReduceOp.evaluateSequential (93 samples, 0.19%) + + + +java/util/stream/AbstractPipeline.wrapAndCopyInto (92 samples, 0.19%) + + + +java/util/stream/AbstractPipeline.copyInto (67 samples, 0.14%) + + + +java/util/stream/SortedOps$SizedRefSortingSink.end (55 samples, 0.11%) + + + +java/util/Arrays.sort (53 samples, 0.11%) + + + +java/util/TimSort.sort (50 samples, 0.10%) + + + +java/util/TimSort.countRunAndMakeAscending (45 samples, 0.09%) + + + +java/util/Comparator$$Lambda$15/224822762.compare (42 samples, 0.09%) + + + +ru/mail/polis/maxciv/future/Caller.makeAllCallsInParallel (597 samples, 1.22%) + + + +java/lang/Iterable.forEach (581 samples, 1.18%) + + + +ru/mail/polis/maxciv/future/Caller$$Lambda$20/1357004640.accept (563 samples, 1.15%) + + + +java/util/concurrent/ExecutorCompletionService.submit (556 samples, 1.13%) + + + +java/util/concurrent/ForkJoinPool.execute (547 samples, 1.12%) + + + +java/util/concurrent/ForkJoinPool.externalPush (547 samples, 1.12%) + + + +java/util/concurrent/ForkJoinPool.signalWork (527 samples, 1.07%) + + + +sun/misc/Unsafe.unpark (518 samples, 1.06%) + + + +Unsafe_Unpark (489 samples, 1.00%) + + + +Parker::unpark() (419 samples, 0.85%) + + + +__psynch_cvsignal (387 samples, 0.79%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (193 samples, 0.39%) + + + +java/security/MessageDigest.digest (104 samples, 0.21%) + + + +java/security/MessageDigest.digest (87 samples, 0.18%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (86 samples, 0.18%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (86 samples, 0.18%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (82 samples, 0.17%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (76 samples, 0.15%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (76 samples, 0.15%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (64 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (67 samples, 0.14%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (67 samples, 0.14%) + + + +org/bouncycastle/util/encoders/Hex.encode (46 samples, 0.09%) + + + +ru/mail/polis/maxciv/cluster/NodesManager.putObject (3,860 samples, 7.87%) +ru/mail/pol.. + + +java/util/concurrent/ExecutorCompletionService.take (2,851 samples, 5.81%) +java/ut.. + + +java/util/concurrent/LinkedBlockingQueue.take (2,851 samples, 5.81%) +java/ut.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await (2,840 samples, 5.79%) +java/ut.. + + +java/util/concurrent/locks/LockSupport.park (2,813 samples, 5.74%) +java/ut.. + + +sun/misc/Unsafe.park (2,812 samples, 5.73%) +sun/mis.. + + +Unsafe_Park (2,660 samples, 5.42%) +Unsafe_.. + + +Parker::park(bool, long) (2,589 samples, 5.28%) +Parker.. + + +__psynch_cvwait (2,473 samples, 5.04%) +__psyn.. + + +ru/mail/polis/maxciv/cluster/NodesManager.getNodesSortedByDistance (105 samples, 0.21%) + + + +java/util/stream/ReferencePipeline.collect (97 samples, 0.20%) + + + +java/util/stream/AbstractPipeline.evaluate (95 samples, 0.19%) + + + +java/util/stream/ReduceOps$ReduceOp.evaluateSequential (95 samples, 0.19%) + + + +java/util/stream/AbstractPipeline.wrapAndCopyInto (95 samples, 0.19%) + + + +java/util/stream/AbstractPipeline.copyInto (76 samples, 0.15%) + + + +java/util/stream/SortedOps$SizedRefSortingSink.end (63 samples, 0.13%) + + + +java/util/Arrays.sort (60 samples, 0.12%) + + + +java/util/TimSort.sort (56 samples, 0.11%) + + + +ru/mail/polis/maxciv/future/Caller.makeAllCallsInParallel (595 samples, 1.21%) + + + +java/lang/Iterable.forEach (592 samples, 1.21%) + + + +ru/mail/polis/maxciv/future/Caller$$Lambda$20/1357004640.accept (572 samples, 1.17%) + + + +java/util/concurrent/ExecutorCompletionService.submit (568 samples, 1.16%) + + + +java/util/concurrent/ForkJoinPool.execute (565 samples, 1.15%) + + + +java/util/concurrent/ForkJoinPool.externalPush (565 samples, 1.15%) + + + +java/util/concurrent/ForkJoinPool.signalWork (543 samples, 1.11%) + + + +sun/misc/Unsafe.unpark (536 samples, 1.09%) + + + +Unsafe_Unpark (501 samples, 1.02%) + + + +Parker::unpark() (422 samples, 0.86%) + + + +__psynch_cvsignal (402 samples, 0.82%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (234 samples, 0.48%) + + + +java/security/MessageDigest.digest (124 samples, 0.25%) + + + +java/security/MessageDigest.digest (121 samples, 0.25%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (117 samples, 0.24%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (113 samples, 0.23%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (109 samples, 0.22%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (93 samples, 0.19%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (92 samples, 0.19%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (80 samples, 0.16%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (75 samples, 0.15%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (75 samples, 0.15%) + + + +org/bouncycastle/util/encoders/Hex.encode (74 samples, 0.15%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (53 samples, 0.11%) + + + +java/io/ByteArrayOutputStream.write (42 samples, 0.09%) + + + +ru/mail/polis/maxciv/data/ReplicasConfig.getReplicasFromString (123 samples, 0.25%) + + + +java/lang/Integer.valueOf (55 samples, 0.11%) + + + +java/lang/Integer.parseInt (51 samples, 0.10%) + + + +java/lang/String.split (60 samples, 0.12%) + + + +java/lang/String.split (59 samples, 0.12%) + + + +RequestHandler2_handleReplicaEntity.handleRequest (7,965 samples, 16.24%) +RequestHandler2_handleRep.. + + +one/nio/http/HttpSession.sendResponse (2,395 samples, 4.88%) +one/ni.. + + +one/nio/http/HttpSession.writeResponse (2,322 samples, 4.73%) +one/n.. + + +one/nio/http/Response.toBytes (78 samples, 0.16%) + + + +one/nio/util/ByteArrayBuilder.append (59 samples, 0.12%) + + + +one/nio/net/Session.write (2,229 samples, 4.54%) +one/n.. + + +one/nio/net/Session.write (2,229 samples, 4.54%) +one/n.. + + +one/nio/net/Session.write (2,223 samples, 4.53%) +one/n.. + + +one/nio/net/Session$ArrayQueueItem.write (2,151 samples, 4.39%) +one/n.. + + +one/nio/net/JavaSocket.write (2,140 samples, 4.36%) +one/n.. + + +sun/nio/ch/SocketChannelImpl.write (2,136 samples, 4.35%) +sun/n.. + + +sun/nio/ch/IOUtil.write (2,080 samples, 4.24%) +sun/n.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (1,949 samples, 3.97%) +sun/.. + + +sun/nio/ch/SocketDispatcher.write (1,940 samples, 3.96%) +sun/.. + + +sun/nio/ch/FileDispatcherImpl.write0 (1,940 samples, 3.96%) +sun/.. + + +write (1,829 samples, 3.73%) +write + + +sun/nio/ch/Util.getTemporaryDirectBuffer (70 samples, 0.14%) + + + +one/nio/http/Request.getParameter (44 samples, 0.09%) + + + +ru/mail/polis/maxciv/KVServiceImpl.handleReplicaEntity (5,522 samples, 11.26%) +ru/mail/polis/ma.. + + +ru/mail/polis/maxciv/cluster/NodesManager.handleLocalEntityRequest (5,522 samples, 11.26%) +ru/mail/polis/ma.. + + +ru/mail/polis/maxciv/StorageService.getObject (1,369 samples, 2.79%) +ru.. + + +ru/mail/polis/maxciv/KVDaoImpl.getObject (1,303 samples, 2.66%) +ru.. + + +org/dizitart/no2/objects/DefaultObjectRepository.find (727 samples, 1.48%) + + + +org/dizitart/no2/internals/DefaultNitriteCollection.find (702 samples, 1.43%) + + + +org/dizitart/no2/internals/NitriteService.find (699 samples, 1.43%) + + + +org/dizitart/no2/internals/SearchService.find (699 samples, 1.43%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (695 samples, 1.42%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (554 samples, 1.13%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (144 samples, 0.29%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (144 samples, 0.29%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (93 samples, 0.19%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (70 samples, 0.14%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (63 samples, 0.13%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (47 samples, 0.10%) + + + +org/h2/mvstore/MVMap.getName (47 samples, 0.10%) + + + +org/h2/mvstore/MVStore.getMapName (47 samples, 0.10%) + + + +org/dizitart/no2/store/NitriteMVMap.get (42 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (242 samples, 0.49%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (240 samples, 0.49%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (220 samples, 0.45%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (177 samples, 0.36%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (132 samples, 0.27%) + + + +org/h2/mvstore/MVMap.getName (132 samples, 0.27%) + + + +org/h2/mvstore/MVStore.getMapName (132 samples, 0.27%) + + + +org/h2/mvstore/DataUtils.getMapName (63 samples, 0.13%) + + + +org/h2/mvstore/DataUtils.getFromMap (61 samples, 0.12%) + + + +org/h2/mvstore/DataUtils.parseMapValue (52 samples, 0.11%) + + + +org/h2/mvstore/MVMap.getMapKey (42 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (166 samples, 0.34%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (163 samples, 0.33%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (144 samples, 0.29%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (137 samples, 0.28%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (111 samples, 0.23%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (88 samples, 0.18%) + + + +org/h2/mvstore/MVMap.getName (88 samples, 0.18%) + + + +org/h2/mvstore/MVStore.getMapName (88 samples, 0.18%) + + + +org/h2/mvstore/DataUtils.getMapName (53 samples, 0.11%) + + + +org/h2/mvstore/DataUtils.getFromMap (49 samples, 0.10%) + + + +org/h2/mvstore/DataUtils.parseMapValue (42 samples, 0.09%) + + + +org/dizitart/no2/util/ValidationUtils.validateSearchTerm (89 samples, 0.18%) + + + +org/dizitart/no2/mapper/GenericMapper.isValueType (70 samples, 0.14%) + + + +org/dizitart/no2/mapper/JacksonFacade.isValueType (70 samples, 0.14%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (70 samples, 0.14%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (55 samples, 0.11%) + + + +org/dizitart/no2/objects/ObjectCursor.firstOrDefault (344 samples, 0.70%) + + + +org/dizitart/no2/util/Iterables.firstOrDefault (343 samples, 0.70%) + + + +org/dizitart/no2/objects/ObjectCursor$ObjectCursorIterator.next (326 samples, 0.66%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (62 samples, 0.13%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (61 samples, 0.12%) + + + +org/dizitart/no2/store/NitriteMVMap.get (45 samples, 0.09%) + + + +org/h2/mvstore/MVMap.get (45 samples, 0.09%) + + + +org/h2/mvstore/MVMap.binarySearch (43 samples, 0.09%) + + + +org/dizitart/no2/mapper/AbstractMapper.asObject (263 samples, 0.54%) + + + +org/dizitart/no2/mapper/GenericMapper.asObjectInternal (263 samples, 0.54%) + + + +org/dizitart/no2/mapper/JacksonFacade.asObject (263 samples, 0.54%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (263 samples, 0.54%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (244 samples, 0.50%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.deserialize (76 samples, 0.15%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.vanillaDeserialize (76 samples, 0.15%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (122 samples, 0.25%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (112 samples, 0.23%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (112 samples, 0.23%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (112 samples, 0.23%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serializeFields (103 samples, 0.21%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (229 samples, 0.47%) + + + +java/security/MessageDigest.digest (137 samples, 0.28%) + + + +java/security/MessageDigest.digest (136 samples, 0.28%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (136 samples, 0.28%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (136 samples, 0.28%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (136 samples, 0.28%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (132 samples, 0.27%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (129 samples, 0.26%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (103 samples, 0.21%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (90 samples, 0.18%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (90 samples, 0.18%) + + + +org/bouncycastle/util/encoders/Hex.encode (85 samples, 0.17%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (61 samples, 0.12%) + + + +java/io/ByteArrayOutputStream.write (42 samples, 0.09%) + + + +ru/mail/polis/maxciv/StorageService.putObject (4,149 samples, 8.46%) +ru/mail/poli.. + + +java/lang/String.getBytes (42 samples, 0.09%) + + + +java/lang/StringCoding.encode (42 samples, 0.09%) + + + +ru/mail/polis/maxciv/KVDaoImpl.upsert (4,102 samples, 8.36%) +ru/mail/poli.. + + +org/dizitart/no2/objects/DefaultObjectRepository.update (3,721 samples, 7.59%) +org/dizita.. + + +org/dizitart/no2/internals/DefaultNitriteCollection.update (3,288 samples, 6.70%) +org/dizit.. + + +org/dizitart/no2/internals/NitriteService.update (3,282 samples, 6.69%) +org/dizit.. + + +org/dizitart/no2/internals/DataService.update (3,279 samples, 6.69%) +org/dizit.. + + +java/lang/StringBuilder.append (678 samples, 1.38%) + + + +java/lang/AbstractStringBuilder.append (126 samples, 0.26%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (66 samples, 0.13%) + + + +java/util/Arrays.copyOf (61 samples, 0.12%) + + + +java/lang/String.valueOf (527 samples, 1.07%) + + + +java/util/AbstractMap.toString (398 samples, 0.81%) + + + +java/lang/StringBuilder.append (361 samples, 0.74%) + + + +java/lang/String.valueOf (179 samples, 0.36%) + + + +java/lang/Long.toString (59 samples, 0.12%) + + + +java/lang/Long.toString (59 samples, 0.12%) + + + +java/lang/Long.getChars (45 samples, 0.09%) + + + +java/lang/Object.toString (107 samples, 0.22%) + + + +java/lang/Object.hashCode (47 samples, 0.10%) + + + +java/lang/StringBuilder.append (149 samples, 0.30%) + + + +java/lang/AbstractStringBuilder.append (141 samples, 0.29%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (101 samples, 0.21%) + + + +org/dizitart/no2/internals/WriteResultImpl.toString (71 samples, 0.14%) + + + +java/lang/StringBuilder.append (61 samples, 0.12%) + + + +java/lang/String.valueOf (42 samples, 0.09%) + + + +java/util/AbstractCollection.toString (42 samples, 0.09%) + + + +org/dizitart/no2/Document.<init> (66 samples, 0.13%) + + + +java/util/LinkedHashMap.<init> (66 samples, 0.13%) + + + +java/util/HashMap.putMapEntries (62 samples, 0.13%) + + + +org/dizitart/no2/Document.getSource (70 samples, 0.14%) + + + +java/util/HashMap.containsKey (68 samples, 0.14%) + + + +java/util/HashMap.getNode (60 samples, 0.12%) + + + +SharedRuntime::complete_monitor_locking_C(oopDesc*, BasicLock*, JavaThread*) (58 samples, 0.12%) + + + +ObjectMonitor::enter(Thread*) (58 samples, 0.12%) + + + +ObjectMonitor::EnterI(Thread*) (56 samples, 0.11%) + + + +org/dizitart/no2/internals/DataService.notify (361 samples, 0.74%) + + + +java/lang/StringBuilder.append (342 samples, 0.70%) + + + +java/lang/String.valueOf (306 samples, 0.62%) + + + +java/util/AbstractCollection.toString (306 samples, 0.62%) + + + +java/lang/StringBuilder.append (295 samples, 0.60%) + + + +java/lang/String.valueOf (234 samples, 0.48%) + + + +org/dizitart/no2/event/ChangedItem.toString (233 samples, 0.48%) + + + +java/lang/StringBuilder.append (230 samples, 0.47%) + + + +java/lang/String.valueOf (159 samples, 0.32%) + + + +java/util/AbstractMap.toString (159 samples, 0.32%) + + + +java/lang/StringBuilder.append (142 samples, 0.29%) + + + +java/lang/String.valueOf (69 samples, 0.14%) + + + +java/lang/StringBuilder.append (58 samples, 0.12%) + + + +java/lang/AbstractStringBuilder.append (54 samples, 0.11%) + + + +java/lang/StringBuilder.append (44 samples, 0.09%) + + + +java/lang/AbstractStringBuilder.append (44 samples, 0.09%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (90 samples, 0.18%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (90 samples, 0.18%) + + + +org/dizitart/no2/store/NitriteMVMap.get (62 samples, 0.13%) + + + +org/h2/mvstore/MVMap.get (62 samples, 0.13%) + + + +org/h2/mvstore/MVMap.binarySearch (62 samples, 0.13%) + + + +org/dizitart/no2/internals/IndexingService.refreshIndexEntry (758 samples, 1.55%) + + + +org/dizitart/no2/internals/IndexMetaService.findIndex (627 samples, 1.28%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (596 samples, 1.22%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (477 samples, 0.97%) + + + +java/lang/StringBuilder.append (84 samples, 0.17%) + + + +java/lang/AbstractStringBuilder.append (84 samples, 0.17%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (55 samples, 0.11%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (357 samples, 0.73%) + + + +org/h2/mvstore/MVMap.getName (357 samples, 0.73%) + + + +org/h2/mvstore/MVStore.getMapName (357 samples, 0.73%) + + + +org/h2/mvstore/DataUtils.getMapName (226 samples, 0.46%) + + + +org/h2/mvstore/DataUtils.getFromMap (211 samples, 0.43%) + + + +org/h2/mvstore/DataUtils.parseMapValue (188 samples, 0.38%) + + + +java/lang/String.charAt (42 samples, 0.09%) + + + +java/lang/StringBuilder.append (85 samples, 0.17%) + + + +java/lang/AbstractStringBuilder.append (85 samples, 0.17%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (55 samples, 0.11%) + + + +org/h2/mvstore/MVMap.getMapKey (93 samples, 0.19%) + + + +org/dizitart/no2/store/NitriteMVStore.openMap (112 samples, 0.23%) + + + +org/h2/mvstore/MVStore.openMap (112 samples, 0.23%) + + + +org/h2/mvstore/MVStore.openMap (112 samples, 0.23%) + + + +org/h2/mvstore/MVMap.get (48 samples, 0.10%) + + + +org/dizitart/no2/util/DocumentUtils.getFields (71 samples, 0.14%) + + + +org/dizitart/no2/util/DocumentUtils.getFieldsInternal (71 samples, 0.14%) + + + +java/util/TreeSet.add (49 samples, 0.10%) + + + +java/util/TreeMap.put (45 samples, 0.09%) + + + +org/dizitart/no2/internals/SearchService.find (626 samples, 1.28%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (601 samples, 1.23%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (526 samples, 1.07%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (112 samples, 0.23%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (97 samples, 0.20%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (66 samples, 0.13%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (45 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (203 samples, 0.41%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (199 samples, 0.41%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (188 samples, 0.38%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (149 samples, 0.30%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (102 samples, 0.21%) + + + +org/h2/mvstore/MVMap.getName (102 samples, 0.21%) + + + +org/h2/mvstore/MVStore.getMapName (102 samples, 0.21%) + + + +org/h2/mvstore/DataUtils.getMapName (43 samples, 0.09%) + + + +org/h2/mvstore/DataUtils.getFromMap (42 samples, 0.09%) + + + +org/h2/mvstore/MVMap.getMapKey (45 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (208 samples, 0.42%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (201 samples, 0.41%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (146 samples, 0.30%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (133 samples, 0.27%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (100 samples, 0.20%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (79 samples, 0.16%) + + + +org/h2/mvstore/MVMap.getName (79 samples, 0.16%) + + + +org/h2/mvstore/MVStore.getMapName (79 samples, 0.16%) + + + +org/h2/mvstore/DataUtils.getMapName (54 samples, 0.11%) + + + +org/h2/mvstore/DataUtils.getFromMap (52 samples, 0.11%) + + + +org/h2/mvstore/DataUtils.parseMapValue (46 samples, 0.09%) + + + +org/dizitart/no2/store/NitriteMVMap.put (325 samples, 0.66%) + + + +org/dizitart/no2/store/NitriteMVMap.updateAttributes (201 samples, 0.41%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (143 samples, 0.29%) + + + +org/h2/mvstore/MVMap.getName (143 samples, 0.29%) + + + +org/h2/mvstore/MVStore.getMapName (143 samples, 0.29%) + + + +org/h2/mvstore/DataUtils.getMapName (86 samples, 0.18%) + + + +org/h2/mvstore/DataUtils.getFromMap (83 samples, 0.17%) + + + +org/h2/mvstore/DataUtils.parseMapValue (72 samples, 0.15%) + + + +org/h2/mvstore/MVMap.put (124 samples, 0.25%) + + + +org/h2/mvstore/MVMap.put (95 samples, 0.19%) + + + +org/h2/mvstore/MVMap.put (55 samples, 0.11%) + + + +org/dizitart/no2/objects/DefaultObjectRepository.asDocument (403 samples, 0.82%) + + + +org/dizitart/no2/util/ObjectUtils.toDocument (403 samples, 0.82%) + + + +org/dizitart/no2/mapper/AbstractMapper.asDocument (403 samples, 0.82%) + + + +org/dizitart/no2/mapper/GenericMapper.asDocumentInternal (399 samples, 0.81%) + + + +org/dizitart/no2/mapper/JacksonFacade.asDocument (398 samples, 0.81%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (271 samples, 0.55%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (254 samples, 0.52%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (110 samples, 0.22%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (110 samples, 0.22%) + + + +com/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer.deserializeObject (100 samples, 0.20%) + + + +com/fasterxml/jackson/databind/node/ObjectNode.replace (52 samples, 0.11%) + + + +java/util/HashMap.put (51 samples, 0.10%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (96 samples, 0.20%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (93 samples, 0.19%) + + + +com/fasterxml/jackson/databind/ser/BeanSerializer.serialize (93 samples, 0.19%) + + + +com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.serializeFields (87 samples, 0.18%) + + + +com/fasterxml/jackson/databind/ser/BeanPropertyWriter.serializeAsField (78 samples, 0.16%) + + + +java/lang/reflect/Field.get (60 samples, 0.12%) + + + +sun/reflect/UnsafeObjectFieldAccessorImpl.get (52 samples, 0.11%) + + + +sun/reflect/UnsafeFieldAccessorImpl.ensureObj (49 samples, 0.10%) + + + +org/dizitart/no2/mapper/JacksonFacade.loadDocument (125 samples, 0.25%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (325 samples, 0.66%) + + + +java/security/MessageDigest.digest (157 samples, 0.32%) + + + +java/security/MessageDigest.digest (121 samples, 0.25%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (120 samples, 0.24%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (118 samples, 0.24%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (118 samples, 0.24%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (112 samples, 0.23%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (110 samples, 0.22%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (97 samples, 0.20%) + + + +org/bouncycastle/jcajce/provider/digest/SHA3$Digest256.<init> (74 samples, 0.15%) + + + +org/bouncycastle/jcajce/provider/digest/SHA3$DigestSHA3.<init> (62 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (90 samples, 0.18%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (89 samples, 0.18%) + + + +org/bouncycastle/util/encoders/Hex.encode (79 samples, 0.16%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (65 samples, 0.13%) + + + +java/io/ByteArrayOutputStream.write (53 samples, 0.11%) + + + +ru/mail/polis/maxciv/KVServiceImpl.handleDefault (443 samples, 0.90%) + + + +one/nio/http/HttpSession.sendResponse (430 samples, 0.88%) + + + +one/nio/http/HttpSession.writeResponse (417 samples, 0.85%) + + + +one/nio/net/Session.write (398 samples, 0.81%) + + + +one/nio/net/Session.write (398 samples, 0.81%) + + + +one/nio/net/Session.write (398 samples, 0.81%) + + + +one/nio/net/Session$ArrayQueueItem.write (390 samples, 0.80%) + + + +one/nio/net/JavaSocket.write (389 samples, 0.79%) + + + +sun/nio/ch/SocketChannelImpl.write (386 samples, 0.79%) + + + +sun/nio/ch/IOUtil.write (378 samples, 0.77%) + + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (349 samples, 0.71%) + + + +sun/nio/ch/SocketDispatcher.write (348 samples, 0.71%) + + + +sun/nio/ch/FileDispatcherImpl.write0 (348 samples, 0.71%) + + + +write (334 samples, 0.68%) + + + +one/nio/http/HttpSession.parseRequest (220 samples, 0.45%) + + + +one/nio/http/Request.<init> (60 samples, 0.12%) + + + +java/lang/String.indexOf (52 samples, 0.11%) + + + +java/lang/String.indexOf (51 samples, 0.10%) + + + +one/nio/util/Utf8.read (111 samples, 0.23%) + + + +one/nio/util/Utf8.read (102 samples, 0.21%) + + + +java/lang/String.<init> (68 samples, 0.14%) + + + +java/util/Arrays.copyOfRange (63 samples, 0.13%) + + + +one/nio/http/Request.getHeader (112 samples, 0.23%) + + + +java/lang/String.regionMatches (46 samples, 0.09%) + + + +one/nio/util/Utf8.read (170 samples, 0.35%) + + + +one/nio/util/Utf8.read (170 samples, 0.35%) + + + +java/lang/String.<init> (90 samples, 0.18%) + + + +java/util/Arrays.copyOfRange (78 samples, 0.16%) + + + +one/nio/net/Session.read (1,554 samples, 3.17%) +one.. + + +one/nio/net/JavaSocket.read (1,545 samples, 3.15%) +one.. + + +sun/nio/ch/SocketChannelImpl.read (1,542 samples, 3.14%) +sun.. + + +sun/nio/ch/IOUtil.read (1,421 samples, 2.90%) +su.. + + +sun/nio/ch/IOUtil.readIntoNativeBuffer (1,189 samples, 2.42%) +su.. + + +sun/nio/ch/SocketDispatcher.read (1,188 samples, 2.42%) +su.. + + +sun/nio/ch/FileDispatcherImpl.read0 (1,188 samples, 2.42%) +su.. + + +read (1,076 samples, 2.19%) +r.. + + +sun/nio/ch/Util.getTemporaryDirectBuffer (118 samples, 0.24%) + + + +java/lang/ThreadLocal.get (61 samples, 0.12%) + + + +sun/nio/ch/NativeThread.current (56 samples, 0.11%) + + + +org/h2/mvstore/MVStore$BackgroundWriterThread.run (59 samples, 0.12%) + + + +org/h2/mvstore/MVStore.writeInBackground (56 samples, 0.11%) + + + +org/h2/mvstore/MVStore.commitAndSave (56 samples, 0.11%) + + + +org/h2/mvstore/MVStore.storeNow (56 samples, 0.11%) + + + +org/h2/mvstore/MVStore.storeNowTry (56 samples, 0.11%) + + + +org/h2/mvstore/Page.writeUnsavedRecursive (46 samples, 0.09%) + + + +os::javaTimeNanos() (75 samples, 0.15%) + + + +thread_start (1,223 samples, 2.49%) +th.. + + +_pthread_start (1,223 samples, 2.49%) +_p.. + + +_pthread_body (1,223 samples, 2.49%) +_p.. + + +java_start(Thread*) (1,223 samples, 2.49%) +ja.. + + +GCTaskThread::run() (793 samples, 1.62%) + + + +GCTaskManager::get_task(unsigned int) (331 samples, 0.67%) + + + +Monitor::wait(bool, long, bool) (325 samples, 0.66%) + + + +Monitor::IWait(Thread*, long) (323 samples, 0.66%) + + + +ParkCommon(ParkEvent*, long) (277 samples, 0.56%) + + + +os::PlatformEvent::park() (274 samples, 0.56%) + + + +__psynch_cvwait (251 samples, 0.51%) + + + +OldToYoungRootsTask::do_it(GCTaskManager*, unsigned int) (55 samples, 0.11%) + + + +CardTableExtension::scavenge_contents_parallel(ObjectStartArray*, MutableSpace*, HeapWord*, PSPromotionManager*, unsigned int, unsigned int) (53 samples, 0.11%) + + + +StealTask::do_it(GCTaskManager*, unsigned int) (316 samples, 0.64%) + + + +SpinPause (294 samples, 0.60%) + + + +JavaThread::run() (93 samples, 0.19%) + + + +JavaThread::thread_main_inner() (93 samples, 0.19%) + + + +CompileBroker::compiler_thread_loop() (92 samples, 0.19%) + + + +CompileBroker::invoke_compiler_on_method(CompileTask*) (91 samples, 0.19%) + + + +C2Compiler::compile_method(ciEnv*, ciMethod*, int) (89 samples, 0.18%) + + + +Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool) (89 samples, 0.18%) + + + +Compile::Code_Gen() (46 samples, 0.09%) + + + +VMThread::run() (334 samples, 0.68%) + + + +VMThread::loop() (334 samples, 0.68%) + + + +SafepointSynchronize::begin() (69 samples, 0.14%) + + + +SafepointSynchronize::do_cleanup_tasks() (42 samples, 0.09%) + + + +VMThread::evaluate_operation(VM_Operation*) (255 samples, 0.52%) + + + +VM_Operation::evaluate() (254 samples, 0.52%) + + + +VM_ParallelGCFailedAllocation::doit() (253 samples, 0.52%) + + + +ParallelScavengeHeap::failed_mem_allocate(unsigned long) (252 samples, 0.51%) + + + +PSScavenge::invoke() (252 samples, 0.51%) + + + +PSScavenge::invoke_no_policy() (251 samples, 0.51%) + + + +StringTable::unlink_or_oops_do(BoolObjectClosure*, OopClosure*, int*, int*) (213 samples, 0.43%) + + + +StringTable::buckets_unlink_or_oops_do(BoolObjectClosure*, OopClosure*, int, int, BasicHashtable<(MemoryType)9>::BucketUnlinkContext*) (207 samples, 0.42%) + + + diff --git a/Profiling/Stage 5/put_get_3_3_2m.svg b/Profiling/Stage 5/put_get_3_3_2m.svg new file mode 100644 index 00000000..5e542a07 --- /dev/null +++ b/Profiling/Stage 5/put_get_3_3_2m.svg @@ -0,0 +1,3315 @@ + + + + + + +Flame Graph + +Reset Zoom +Search + + +all (52,236 samples, 100.00%) +all + + +OptoRuntime::new_array_C(Klass*, int, JavaThread*) (265 samples, 0.51%) + + + +TypeArrayKlass::allocate_common(int, bool, Thread*) (210 samples, 0.40%) + + + +CollectedHeap::array_allocate(KlassHandle, int, int, Thread*) (205 samples, 0.39%) + + + +CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*) (69 samples, 0.13%) + + + +OptoRuntime::new_array_nozero_C(Klass*, int, JavaThread*) (129 samples, 0.25%) + + + +TypeArrayKlass::allocate_common(int, bool, Thread*) (105 samples, 0.20%) + + + +CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*) (83 samples, 0.16%) + + + +CollectedHeap::allocate_from_tlab_slow(KlassHandle, Thread*, unsigned long) (61 samples, 0.12%) + + + +OptoRuntime::new_instance_C(Klass*, JavaThread*) (88 samples, 0.17%) + + + +InstanceKlass::allocate_instance(Thread*) (61 samples, 0.12%) + + + +CollectedHeap::obj_allocate(KlassHandle, int, Thread*) (60 samples, 0.11%) + + + +CollectedHeap::common_mem_allocate_noinit(KlassHandle, unsigned long, Thread*) (49 samples, 0.09%) + + + +SharedRuntime::complete_monitor_locking_C(oopDesc*, BasicLock*, JavaThread*) (527 samples, 1.01%) + + + +ObjectMonitor::enter(Thread*) (501 samples, 0.96%) + + + +ObjectMonitor::TrySpin_VaryDuration(Thread*) (406 samples, 0.78%) + + + +ObjectMonitor::NotRunnable(Thread*, Thread*) (146 samples, 0.28%) + + + +SpinPause (56 samples, 0.11%) + + + +java/util/concurrent/ForkJoinWorkerThread.run (19,149 samples, 36.66%) +java/util/concurrent/ForkJoinWorkerThread.run + + +java/util/concurrent/ForkJoinPool.runWorker (19,149 samples, 36.66%) +java/util/concurrent/ForkJoinPool.runWorker + + +java/util/concurrent/ForkJoinPool$WorkQueue.runTask (11,289 samples, 21.61%) +java/util/concurrent/ForkJoinPool$.. + + +java/util/concurrent/ForkJoinTask.doExec (11,238 samples, 21.51%) +java/util/concurrent/ForkJoinTask... + + +java/util/concurrent/ForkJoinTask$AdaptedCallable.exec (174 samples, 0.33%) + + + +ru/mail/polis/maxciv/future/PutCall.call (160 samples, 0.31%) + + + +ru/mail/polis/maxciv/future/PutCall.call (160 samples, 0.31%) + + + +ru/mail/polis/maxciv/future/PutCall.localPut (160 samples, 0.31%) + + + +ru/mail/polis/maxciv/StorageService.putObject (160 samples, 0.31%) + + + +ru/mail/polis/maxciv/KVDaoImpl.upsert (128 samples, 0.25%) + + + +java/util/concurrent/ForkJoinTask$RunnableExecuteAction.exec (11,056 samples, 21.17%) +java/util/concurrent/ForkJoinTask.. + + +java/util/concurrent/FutureTask.run (11,056 samples, 21.17%) +java/util/concurrent/FutureTask.run + + +java/util/concurrent/Executors$RunnableAdapter.call (10,083 samples, 19.30%) +java/util/concurrent/Executors.. + + +java/util/concurrent/ForkJoinTask$AdaptedCallable.run (10,083 samples, 19.30%) +java/util/concurrent/ForkJoinT.. + + +java/util/concurrent/ForkJoinTask.invoke (10,083 samples, 19.30%) +java/util/concurrent/ForkJoinT.. + + +java/util/concurrent/ForkJoinTask.doInvoke (10,083 samples, 19.30%) +java/util/concurrent/ForkJoinT.. + + +java/util/concurrent/ForkJoinTask.doExec (10,083 samples, 19.30%) +java/util/concurrent/ForkJoinT.. + + +java/util/concurrent/ForkJoinTask$AdaptedCallable.exec (10,083 samples, 19.30%) +java/util/concurrent/ForkJoinT.. + + +ru/mail/polis/maxciv/future/GetCall.call (4,424 samples, 8.47%) +ru/mail/poli.. + + +ru/mail/polis/maxciv/future/GetCall.call (4,424 samples, 8.47%) +ru/mail/poli.. + + +ru/mail/polis/maxciv/future/GetCall.get (3,503 samples, 6.71%) +ru/mail/p.. + + +one/nio/http/HttpClient.get (3,495 samples, 6.69%) +one/nio/h.. + + +one/nio/http/HttpClient.invoke (3,473 samples, 6.65%) +one/nio/h.. + + +one/nio/http/HttpClient$ResponseReader.<init> (2,114 samples, 4.05%) +one/.. + + +one/nio/net/JavaSocket.read (2,114 samples, 4.05%) +one/.. + + +sun/nio/ch/SocketChannelImpl.read (2,099 samples, 4.02%) +sun/.. + + +sun/nio/ch/IOUtil.read (2,072 samples, 3.97%) +sun/.. + + +sun/nio/ch/IOUtil.readIntoNativeBuffer (2,004 samples, 3.84%) +sun/.. + + +sun/nio/ch/SocketDispatcher.read (2,004 samples, 3.84%) +sun/.. + + +sun/nio/ch/FileDispatcherImpl.read0 (2,004 samples, 3.84%) +sun/.. + + +read (1,875 samples, 3.59%) +read + + +one/nio/http/HttpClient$ResponseReader.readResponse (91 samples, 0.17%) + + + +one/nio/http/HttpClient$ResponseReader.readLine (45 samples, 0.09%) + + + +one/nio/http/Request.toBytes (58 samples, 0.11%) + + + +one/nio/net/JavaSocket.writeFully (1,118 samples, 2.14%) +o.. + + +sun/nio/ch/SocketChannelImpl.write (1,114 samples, 2.13%) +s.. + + +sun/nio/ch/IOUtil.write (1,079 samples, 2.07%) +s.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (1,005 samples, 1.92%) +s.. + + +sun/nio/ch/SocketDispatcher.write (995 samples, 1.90%) +s.. + + +sun/nio/ch/FileDispatcherImpl.write0 (994 samples, 1.90%) +s.. + + +write (938 samples, 1.80%) +w.. + + +ru/mail/polis/maxciv/future/GetCall.localGet (914 samples, 1.75%) + + + +ru/mail/polis/maxciv/StorageService.getObject (913 samples, 1.75%) + + + +ru/mail/polis/maxciv/KVDaoImpl.getObject (844 samples, 1.62%) + + + +org/dizitart/no2/objects/DefaultObjectRepository.find (388 samples, 0.74%) + + + +org/dizitart/no2/internals/DefaultNitriteCollection.find (385 samples, 0.74%) + + + +org/dizitart/no2/internals/NitriteService.find (381 samples, 0.73%) + + + +org/dizitart/no2/internals/SearchService.find (381 samples, 0.73%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (381 samples, 0.73%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (304 samples, 0.58%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (78 samples, 0.15%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (78 samples, 0.15%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (51 samples, 0.10%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (136 samples, 0.26%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (134 samples, 0.26%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (121 samples, 0.23%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (96 samples, 0.18%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (73 samples, 0.14%) + + + +org/h2/mvstore/MVMap.getName (73 samples, 0.14%) + + + +org/h2/mvstore/MVStore.getMapName (73 samples, 0.14%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (89 samples, 0.17%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (89 samples, 0.17%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (76 samples, 0.15%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (71 samples, 0.14%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (59 samples, 0.11%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (46 samples, 0.09%) + + + +org/h2/mvstore/MVMap.getName (46 samples, 0.09%) + + + +org/h2/mvstore/MVStore.getMapName (46 samples, 0.09%) + + + +org/dizitart/no2/util/ValidationUtils.validateSearchTerm (53 samples, 0.10%) + + + +org/dizitart/no2/mapper/GenericMapper.isValueType (50 samples, 0.10%) + + + +org/dizitart/no2/mapper/JacksonFacade.isValueType (50 samples, 0.10%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (50 samples, 0.10%) + + + +org/dizitart/no2/objects/ObjectCursor.firstOrDefault (299 samples, 0.57%) + + + +org/dizitart/no2/util/Iterables.firstOrDefault (299 samples, 0.57%) + + + +org/dizitart/no2/objects/ObjectCursor$ObjectCursorIterator.next (297 samples, 0.57%) + + + +org/dizitart/no2/mapper/AbstractMapper.asObject (261 samples, 0.50%) + + + +org/dizitart/no2/mapper/GenericMapper.asObjectInternal (261 samples, 0.50%) + + + +org/dizitart/no2/mapper/JacksonFacade.asObject (260 samples, 0.50%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (260 samples, 0.50%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (250 samples, 0.48%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.deserialize (87 samples, 0.17%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.vanillaDeserialize (76 samples, 0.15%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (123 samples, 0.24%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (114 samples, 0.22%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (114 samples, 0.22%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (114 samples, 0.22%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serializeFields (105 samples, 0.20%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (151 samples, 0.29%) + + + +java/security/MessageDigest.digest (87 samples, 0.17%) + + + +java/security/MessageDigest.digest (82 samples, 0.16%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (82 samples, 0.16%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (81 samples, 0.16%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (78 samples, 0.15%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (70 samples, 0.13%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (69 samples, 0.13%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (59 samples, 0.11%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (58 samples, 0.11%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (57 samples, 0.11%) + + + +org/bouncycastle/util/encoders/Hex.encode (48 samples, 0.09%) + + + +ru/mail/polis/maxciv/future/PutCall.call (5,658 samples, 10.83%) +ru/mail/polis/ma.. + + +ru/mail/polis/maxciv/future/PutCall.call (5,657 samples, 10.83%) +ru/mail/polis/ma.. + + +ru/mail/polis/maxciv/future/PutCall.localPut (2,689 samples, 5.15%) +ru/mai.. + + +ru/mail/polis/maxciv/StorageService.putObject (2,687 samples, 5.14%) +ru/mai.. + + +ru/mail/polis/maxciv/KVDaoImpl.upsert (2,664 samples, 5.10%) +ru/mai.. + + +org/dizitart/no2/objects/DefaultObjectRepository.update (2,503 samples, 4.79%) +org/di.. + + +org/dizitart/no2/internals/DefaultNitriteCollection.update (2,266 samples, 4.34%) +org/d.. + + +org/dizitart/no2/internals/NitriteService.update (2,264 samples, 4.33%) +org/d.. + + +org/dizitart/no2/internals/DataService.update (2,260 samples, 4.33%) +org/d.. + + +java/lang/StringBuilder.append (504 samples, 0.96%) + + + +java/lang/AbstractStringBuilder.append (89 samples, 0.17%) + + + +java/lang/String.valueOf (386 samples, 0.74%) + + + +java/util/AbstractMap.toString (293 samples, 0.56%) + + + +java/lang/StringBuilder.append (262 samples, 0.50%) + + + +java/lang/String.valueOf (138 samples, 0.26%) + + + +java/lang/Object.toString (79 samples, 0.15%) + + + +java/lang/StringBuilder.append (106 samples, 0.20%) + + + +java/lang/AbstractStringBuilder.append (98 samples, 0.19%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (83 samples, 0.16%) + + + +org/dizitart/no2/internals/WriteResultImpl.toString (49 samples, 0.09%) + + + +org/dizitart/no2/Document.<init> (52 samples, 0.10%) + + + +java/util/LinkedHashMap.<init> (52 samples, 0.10%) + + + +java/util/HashMap.putMapEntries (48 samples, 0.09%) + + + +org/dizitart/no2/Document.getSource (67 samples, 0.13%) + + + +java/util/HashMap.containsKey (66 samples, 0.13%) + + + +java/util/HashMap.getNode (61 samples, 0.12%) + + + +SharedRuntime::complete_monitor_locking_C(oopDesc*, BasicLock*, JavaThread*) (49 samples, 0.09%) + + + +ObjectMonitor::enter(Thread*) (49 samples, 0.09%) + + + +ObjectMonitor::EnterI(Thread*) (49 samples, 0.09%) + + + +org/dizitart/no2/internals/DataService.notify (241 samples, 0.46%) + + + +java/lang/StringBuilder.append (225 samples, 0.43%) + + + +java/lang/String.valueOf (194 samples, 0.37%) + + + +java/util/AbstractCollection.toString (193 samples, 0.37%) + + + +java/lang/StringBuilder.append (186 samples, 0.36%) + + + +java/lang/String.valueOf (147 samples, 0.28%) + + + +org/dizitart/no2/event/ChangedItem.toString (147 samples, 0.28%) + + + +java/lang/StringBuilder.append (141 samples, 0.27%) + + + +java/lang/String.valueOf (93 samples, 0.18%) + + + +java/util/AbstractMap.toString (92 samples, 0.18%) + + + +java/lang/StringBuilder.append (78 samples, 0.15%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (71 samples, 0.14%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (71 samples, 0.14%) + + + +org/dizitart/no2/internals/IndexingService.refreshIndexEntry (453 samples, 0.87%) + + + +org/dizitart/no2/internals/IndexMetaService.findIndex (350 samples, 0.67%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (330 samples, 0.63%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (283 samples, 0.54%) + + + +java/lang/StringBuilder.append (50 samples, 0.10%) + + + +java/lang/AbstractStringBuilder.append (50 samples, 0.10%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (213 samples, 0.41%) + + + +org/h2/mvstore/MVMap.getName (213 samples, 0.41%) + + + +org/h2/mvstore/MVStore.getMapName (213 samples, 0.41%) + + + +org/h2/mvstore/DataUtils.getMapName (140 samples, 0.27%) + + + +org/h2/mvstore/DataUtils.getFromMap (134 samples, 0.26%) + + + +org/h2/mvstore/DataUtils.parseMapValue (123 samples, 0.24%) + + + +java/lang/StringBuilder.append (75 samples, 0.14%) + + + +java/lang/AbstractStringBuilder.append (75 samples, 0.14%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (46 samples, 0.09%) + + + +org/h2/mvstore/MVMap.getMapKey (50 samples, 0.10%) + + + +org/dizitart/no2/store/NitriteMVStore.openMap (45 samples, 0.09%) + + + +org/h2/mvstore/MVStore.openMap (45 samples, 0.09%) + + + +org/h2/mvstore/MVStore.openMap (45 samples, 0.09%) + + + +org/dizitart/no2/util/DocumentUtils.getFields (55 samples, 0.11%) + + + +org/dizitart/no2/util/DocumentUtils.getFieldsInternal (55 samples, 0.11%) + + + +org/dizitart/no2/internals/SearchService.find (444 samples, 0.85%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (427 samples, 0.82%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (364 samples, 0.70%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (95 samples, 0.18%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (79 samples, 0.15%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (48 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (145 samples, 0.28%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (137 samples, 0.26%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (129 samples, 0.25%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (100 samples, 0.19%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (76 samples, 0.15%) + + + +org/h2/mvstore/MVMap.getName (76 samples, 0.15%) + + + +org/h2/mvstore/MVStore.getMapName (76 samples, 0.15%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (121 samples, 0.23%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (110 samples, 0.21%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (63 samples, 0.12%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (57 samples, 0.11%) + + + +org/dizitart/no2/store/NitriteMVMap.put (232 samples, 0.44%) + + + +org/dizitart/no2/store/NitriteMVMap.updateAttributes (133 samples, 0.25%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (93 samples, 0.18%) + + + +org/h2/mvstore/MVMap.getName (93 samples, 0.18%) + + + +org/h2/mvstore/MVStore.getMapName (93 samples, 0.18%) + + + +org/h2/mvstore/DataUtils.getMapName (59 samples, 0.11%) + + + +org/h2/mvstore/DataUtils.getFromMap (58 samples, 0.11%) + + + +org/h2/mvstore/DataUtils.parseMapValue (45 samples, 0.09%) + + + +org/h2/mvstore/MVMap.put (98 samples, 0.19%) + + + +org/h2/mvstore/MVMap.put (83 samples, 0.16%) + + + +org/dizitart/no2/objects/DefaultObjectRepository.asDocument (234 samples, 0.45%) + + + +org/dizitart/no2/util/ObjectUtils.toDocument (234 samples, 0.45%) + + + +org/dizitart/no2/mapper/AbstractMapper.asDocument (234 samples, 0.45%) + + + +org/dizitart/no2/mapper/GenericMapper.asDocumentInternal (232 samples, 0.44%) + + + +org/dizitart/no2/mapper/JacksonFacade.asDocument (232 samples, 0.44%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (159 samples, 0.30%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (153 samples, 0.29%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (74 samples, 0.14%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (74 samples, 0.14%) + + + +com/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer.deserializeObject (73 samples, 0.14%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (58 samples, 0.11%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (55 samples, 0.11%) + + + +com/fasterxml/jackson/databind/ser/BeanSerializer.serialize (55 samples, 0.11%) + + + +com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.serializeFields (55 samples, 0.11%) + + + +org/dizitart/no2/mapper/JacksonFacade.loadDocument (70 samples, 0.13%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (134 samples, 0.26%) + + + +java/security/MessageDigest.digest (89 samples, 0.17%) + + + +java/security/MessageDigest.digest (74 samples, 0.14%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (74 samples, 0.14%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (71 samples, 0.14%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (70 samples, 0.13%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (61 samples, 0.12%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (61 samples, 0.12%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (49 samples, 0.09%) + + + +ru/mail/polis/maxciv/future/PutCall.put (2,967 samples, 5.68%) +ru/mail.. + + +one/nio/http/HttpClient.put (2,955 samples, 5.66%) +one/nio.. + + +one/nio/http/HttpClient.invoke (2,926 samples, 5.60%) +one/nio.. + + +one/nio/http/HttpClient$ResponseReader.<init> (1,753 samples, 3.36%) +one.. + + +one/nio/net/JavaSocket.read (1,751 samples, 3.35%) +one.. + + +sun/nio/ch/SocketChannelImpl.read (1,738 samples, 3.33%) +sun.. + + +sun/nio/ch/IOUtil.read (1,716 samples, 3.29%) +sun.. + + +sun/nio/ch/IOUtil.readIntoNativeBuffer (1,667 samples, 3.19%) +sun.. + + +sun/nio/ch/SocketDispatcher.read (1,667 samples, 3.19%) +sun.. + + +sun/nio/ch/FileDispatcherImpl.read0 (1,667 samples, 3.19%) +sun.. + + +read (1,590 samples, 3.04%) +read + + +one/nio/http/HttpClient$ResponseReader.readResponse (70 samples, 0.13%) + + + +one/nio/http/HttpClient$ResponseReader.readLine (46 samples, 0.09%) + + + +one/nio/http/Request.toBytes (64 samples, 0.12%) + + + +one/nio/net/JavaSocket.writeFully (961 samples, 1.84%) +o.. + + +sun/nio/ch/SocketChannelImpl.write (956 samples, 1.83%) +s.. + + +sun/nio/ch/IOUtil.write (938 samples, 1.80%) +s.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (863 samples, 1.65%) + + + +sun/nio/ch/SocketDispatcher.write (857 samples, 1.64%) + + + +sun/nio/ch/FileDispatcherImpl.write0 (857 samples, 1.64%) + + + +write (813 samples, 1.56%) + + + +sun/nio/ch/Util.getTemporaryDirectBuffer (45 samples, 0.09%) + + + +one/nio/pool/Pool.borrowObject (47 samples, 0.09%) + + + +java/util/concurrent/FutureTask.set (972 samples, 1.86%) +j.. + + +java/util/concurrent/FutureTask.finishCompletion (971 samples, 1.86%) +j.. + + +java/util/concurrent/ExecutorCompletionService$QueueingFuture.done (971 samples, 1.86%) +j.. + + +java/util/AbstractQueue.add (971 samples, 1.86%) +j.. + + +java/util/concurrent/LinkedBlockingQueue.offer (971 samples, 1.86%) +j.. + + +java/util/concurrent/LinkedBlockingQueue.signalNotEmpty (959 samples, 1.84%) +j.. + + +java/util/concurrent/locks/ReentrantLock.unlock (930 samples, 1.78%) +j.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer.release (930 samples, 1.78%) +j.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer.unparkSuccessor (927 samples, 1.77%) + + + +java/util/concurrent/locks/LockSupport.unpark (925 samples, 1.77%) + + + +sun/misc/Unsafe.unpark (925 samples, 1.77%) + + + +Unsafe_Unpark (841 samples, 1.61%) + + + +Parker::unpark() (724 samples, 1.39%) + + + +__psynch_cvsignal (682 samples, 1.31%) + + + +java/util/concurrent/ForkJoinPool.awaitWork (7,149 samples, 13.69%) +java/util/concurrent/.. + + +sun/misc/Unsafe.park (7,099 samples, 13.59%) +sun/misc/Unsafe.park + + +Unsafe_Park (6,686 samples, 12.80%) +Unsafe_Park + + +Parker::park(bool, long) (6,467 samples, 12.38%) +Parker::park(bool,.. + + +JavaThread::handle_special_suspend_equivalent_condition() (58 samples, 0.11%) + + + +__psynch_cvwait (5,971 samples, 11.43%) +__psynch_cvwait + + +_pthread_cond_wait (310 samples, 0.59%) + + + +_pthread_mutex_firstfit_lock_slow (250 samples, 0.48%) + + + +__psynch_mutexwait (247 samples, 0.47%) + + + +java/util/concurrent/ForkJoinPool.scan (682 samples, 1.31%) + + + +java/util/concurrent/ForkJoinPool.signalWork (494 samples, 0.95%) + + + +sun/misc/Unsafe.unpark (492 samples, 0.94%) + + + +Unsafe_Unpark (464 samples, 0.89%) + + + +Parker::unpark() (407 samples, 0.78%) + + + +__psynch_cvsignal (373 samples, 0.71%) + + + +one/nio/server/SelectorThread.run (29,354 samples, 56.19%) +one/nio/server/SelectorThread.run + + +one/nio/net/JavaSelector.select (8,159 samples, 15.62%) +one/nio/net/JavaSelector.. + + +one/nio/net/JavaSelector.iteratorFor (67 samples, 0.13%) + + + +sun/nio/ch/SelectorImpl.select (8,027 samples, 15.37%) +sun/nio/ch/SelectorImpl.. + + +sun/nio/ch/SelectorImpl.select (8,026 samples, 15.36%) +sun/nio/ch/SelectorImpl.. + + +sun/nio/ch/SelectorImpl.lockAndDoSelect (8,026 samples, 15.36%) +sun/nio/ch/SelectorImpl.. + + +sun/nio/ch/KQueueSelectorImpl.doSelect (7,954 samples, 15.23%) +sun/nio/ch/KQueueSelect.. + + +java/nio/channels/spi/AbstractSelector.begin (59 samples, 0.11%) + + + +java/nio/channels/spi/AbstractSelector.end (58 samples, 0.11%) + + + +java/nio/channels/spi/AbstractInterruptibleChannel.blockedOn (58 samples, 0.11%) + + + +sun/nio/ch/KQueueArrayWrapper.poll (7,690 samples, 14.72%) +sun/nio/ch/KQueueArray.. + + +sun/nio/ch/KQueueArrayWrapper.kevent0 (7,680 samples, 14.70%) +sun/nio/ch/KQueueArray.. + + +Java_sun_nio_ch_KQueueArrayWrapper_kevent0 (63 samples, 0.12%) + + + +kevent (7,155 samples, 13.70%) +kevent + + +sun/nio/ch/KQueueSelectorImpl.updateSelectedKeys (101 samples, 0.19%) + + + +one/nio/net/Session.process (21,094 samples, 40.38%) +one/nio/net/Session.process + + +one/nio/http/HttpSession.processRead (21,051 samples, 40.30%) +one/nio/http/HttpSession.processRead + + +one/nio/http/HttpSession.processHttpBuffer (19,503 samples, 37.34%) +one/nio/http/HttpSession.processHttpBuffer + + +one/nio/http/HttpSession.handleParsedRequest (18,909 samples, 36.20%) +one/nio/http/HttpSession.handleParsedRequest + + +one/nio/http/HttpServer.handleRequest (18,909 samples, 36.20%) +one/nio/http/HttpServer.handleRequest + + +RequestHandler1_handleEntity.handleRequest (10,380 samples, 19.87%) +RequestHandler1_handleEntity.ha.. + + +one/nio/http/HttpSession.sendResponse (1,439 samples, 2.75%) +on.. + + +one/nio/http/HttpSession.writeResponse (1,375 samples, 2.63%) +on.. + + +one/nio/net/Session.write (1,337 samples, 2.56%) +on.. + + +one/nio/net/Session.write (1,337 samples, 2.56%) +on.. + + +one/nio/net/Session.write (1,331 samples, 2.55%) +on.. + + +one/nio/net/Session$ArrayQueueItem.write (1,307 samples, 2.50%) +on.. + + +one/nio/net/JavaSocket.write (1,305 samples, 2.50%) +on.. + + +sun/nio/ch/SocketChannelImpl.write (1,302 samples, 2.49%) +su.. + + +sun/nio/ch/IOUtil.write (1,271 samples, 2.43%) +su.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (1,192 samples, 2.28%) +s.. + + +sun/nio/ch/SocketDispatcher.write (1,185 samples, 2.27%) +s.. + + +sun/nio/ch/FileDispatcherImpl.write0 (1,185 samples, 2.27%) +s.. + + +write (1,134 samples, 2.17%) +w.. + + +one/nio/http/Request.getParameter (60 samples, 0.11%) + + + +ru/mail/polis/maxciv/KVServiceImpl.handleEntity (8,878 samples, 17.00%) +ru/mail/polis/maxciv/KVSer.. + + +ru/mail/polis/maxciv/cluster/NodesManager.handleEntityRequest (8,878 samples, 17.00%) +ru/mail/polis/maxciv/clust.. + + +ru/mail/polis/maxciv/cluster/NodesManager.getObject (4,372 samples, 8.37%) +ru/mail/poli.. + + +java/util/concurrent/ExecutorCompletionService.take (3,192 samples, 6.11%) +java/uti.. + + +java/util/concurrent/LinkedBlockingQueue.take (3,187 samples, 6.10%) +java/uti.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await (3,159 samples, 6.05%) +java/uti.. + + +java/util/concurrent/locks/LockSupport.park (3,127 samples, 5.99%) +java/uti.. + + +sun/misc/Unsafe.park (3,127 samples, 5.99%) +sun/misc.. + + +Unsafe_Park (2,951 samples, 5.65%) +Unsafe_.. + + +Parker::park(bool, long) (2,848 samples, 5.45%) +Parker:.. + + +__psynch_cvwait (2,731 samples, 5.23%) +__psyn.. + + +one/nio/http/Response.getHeader (53 samples, 0.10%) + + + +ru/mail/polis/maxciv/cluster/NodesManager.getNodesSortedByDistance (112 samples, 0.21%) + + + +java/util/stream/ReferencePipeline.collect (83 samples, 0.16%) + + + +java/util/stream/AbstractPipeline.evaluate (81 samples, 0.16%) + + + +java/util/stream/ReduceOps$ReduceOp.evaluateSequential (81 samples, 0.16%) + + + +java/util/stream/AbstractPipeline.wrapAndCopyInto (81 samples, 0.16%) + + + +java/util/stream/AbstractPipeline.copyInto (59 samples, 0.11%) + + + +java/util/stream/SortedOps$SizedRefSortingSink.end (49 samples, 0.09%) + + + +java/util/Arrays.sort (46 samples, 0.09%) + + + +ru/mail/polis/maxciv/future/Caller.makeAllCallsInParallel (698 samples, 1.34%) + + + +java/lang/Iterable.forEach (674 samples, 1.29%) + + + +ru/mail/polis/maxciv/future/Caller$$Lambda$20/1357004640.accept (648 samples, 1.24%) + + + +java/util/concurrent/ExecutorCompletionService.submit (646 samples, 1.24%) + + + +java/util/concurrent/ForkJoinPool.execute (636 samples, 1.22%) + + + +java/util/concurrent/ForkJoinPool.externalPush (635 samples, 1.22%) + + + +java/util/concurrent/ForkJoinPool.signalWork (609 samples, 1.17%) + + + +sun/misc/Unsafe.unpark (598 samples, 1.14%) + + + +Unsafe_Unpark (563 samples, 1.08%) + + + +Parker::unpark() (478 samples, 0.92%) + + + +__psynch_cvsignal (444 samples, 0.85%) + + + +_pthread_mutex_firstfit_unlock_slow (46 samples, 0.09%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (238 samples, 0.46%) + + + +java/security/MessageDigest.digest (129 samples, 0.25%) + + + +java/security/MessageDigest.digest (108 samples, 0.21%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (107 samples, 0.20%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (107 samples, 0.20%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (104 samples, 0.20%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (90 samples, 0.17%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (89 samples, 0.17%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (75 samples, 0.14%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (74 samples, 0.14%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (74 samples, 0.14%) + + + +org/bouncycastle/util/encoders/Hex.encode (55 samples, 0.11%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (46 samples, 0.09%) + + + +ru/mail/polis/maxciv/cluster/NodesManager.putObject (4,342 samples, 8.31%) +ru/mail/poli.. + + +java/util/concurrent/ExecutorCompletionService.take (3,339 samples, 6.39%) +java/uti.. + + +java/util/concurrent/LinkedBlockingQueue.take (3,337 samples, 6.39%) +java/uti.. + + +java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await (3,306 samples, 6.33%) +java/uti.. + + +java/util/concurrent/locks/LockSupport.park (3,280 samples, 6.28%) +java/uti.. + + +sun/misc/Unsafe.park (3,279 samples, 6.28%) +sun/misc.. + + +Unsafe_Park (3,115 samples, 5.96%) +Unsafe_P.. + + +Parker::park(bool, long) (3,037 samples, 5.81%) +Parker:.. + + +__psynch_cvwait (2,911 samples, 5.57%) +__psync.. + + +_pthread_cond_wait (49 samples, 0.09%) + + + +ru/mail/polis/maxciv/cluster/NodesManager.getNodesSortedByDistance (84 samples, 0.16%) + + + +java/util/stream/ReferencePipeline.collect (74 samples, 0.14%) + + + +java/util/stream/AbstractPipeline.evaluate (71 samples, 0.14%) + + + +java/util/stream/ReduceOps$ReduceOp.evaluateSequential (70 samples, 0.13%) + + + +java/util/stream/AbstractPipeline.wrapAndCopyInto (70 samples, 0.13%) + + + +java/util/stream/AbstractPipeline.copyInto (53 samples, 0.10%) + + + +ru/mail/polis/maxciv/future/Caller.makeAllCallsInParallel (641 samples, 1.23%) + + + +java/lang/Iterable.forEach (632 samples, 1.21%) + + + +ru/mail/polis/maxciv/future/Caller$$Lambda$20/1357004640.accept (616 samples, 1.18%) + + + +java/util/concurrent/ExecutorCompletionService.submit (612 samples, 1.17%) + + + +java/util/concurrent/ForkJoinPool.execute (611 samples, 1.17%) + + + +java/util/concurrent/ForkJoinPool.externalPush (610 samples, 1.17%) + + + +java/util/concurrent/ForkJoinPool.signalWork (581 samples, 1.11%) + + + +sun/misc/Unsafe.unpark (569 samples, 1.09%) + + + +Unsafe_Unpark (528 samples, 1.01%) + + + +Parker::unpark() (440 samples, 0.84%) + + + +__psynch_cvsignal (399 samples, 0.76%) + + + +_pthread_mutex_firstfit_unlock_slow (48 samples, 0.09%) + + + +__psynch_mutexdrop (47 samples, 0.09%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (209 samples, 0.40%) + + + +java/security/MessageDigest.digest (119 samples, 0.23%) + + + +java/security/MessageDigest.digest (110 samples, 0.21%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (106 samples, 0.20%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (101 samples, 0.19%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (98 samples, 0.19%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (86 samples, 0.16%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (85 samples, 0.16%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (64 samples, 0.12%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (68 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (67 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.encode (65 samples, 0.12%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (45 samples, 0.09%) + + + +ru/mail/polis/maxciv/data/ReplicasConfig.getReplicasFromString (143 samples, 0.27%) + + + +java/lang/Integer.valueOf (62 samples, 0.12%) + + + +java/lang/Integer.parseInt (53 samples, 0.10%) + + + +java/lang/String.split (68 samples, 0.13%) + + + +java/lang/String.split (68 samples, 0.13%) + + + +RequestHandler2_handleReplicaEntity.handleRequest (7,965 samples, 15.25%) +RequestHandler2_handleR.. + + +one/nio/http/HttpSession.sendResponse (2,504 samples, 4.79%) +one/ni.. + + +one/nio/http/HttpSession.writeResponse (2,430 samples, 4.65%) +one/n.. + + +one/nio/http/Response.toBytes (75 samples, 0.14%) + + + +one/nio/util/ByteArrayBuilder.append (58 samples, 0.11%) + + + +one/nio/net/Session.write (2,341 samples, 4.48%) +one/n.. + + +one/nio/net/Session.write (2,341 samples, 4.48%) +one/n.. + + +one/nio/net/Session.write (2,337 samples, 4.47%) +one/n.. + + +one/nio/net/Session$ArrayQueueItem.write (2,276 samples, 4.36%) +one/n.. + + +one/nio/net/JavaSocket.write (2,268 samples, 4.34%) +one/n.. + + +sun/nio/ch/SocketChannelImpl.write (2,266 samples, 4.34%) +sun/n.. + + +sun/nio/ch/IOUtil.write (2,206 samples, 4.22%) +sun/n.. + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (2,051 samples, 3.93%) +sun/.. + + +sun/nio/ch/SocketDispatcher.write (2,039 samples, 3.90%) +sun/.. + + +sun/nio/ch/FileDispatcherImpl.write0 (2,039 samples, 3.90%) +sun/.. + + +write (1,921 samples, 3.68%) +write + + +sun/nio/ch/Util.getTemporaryDirectBuffer (88 samples, 0.17%) + + + +ru/mail/polis/maxciv/KVServiceImpl.handleReplicaEntity (5,415 samples, 10.37%) +ru/mail/polis/m.. + + +ru/mail/polis/maxciv/cluster/NodesManager.handleLocalEntityRequest (5,412 samples, 10.36%) +ru/mail/polis/m.. + + +ru/mail/polis/maxciv/StorageService.getObject (1,369 samples, 2.62%) +ru.. + + +ru/mail/polis/maxciv/KVDaoImpl.getObject (1,306 samples, 2.50%) +ru.. + + +org/dizitart/no2/objects/DefaultObjectRepository.find (694 samples, 1.33%) + + + +org/dizitart/no2/internals/DefaultNitriteCollection.find (681 samples, 1.30%) + + + +org/dizitart/no2/internals/NitriteService.find (676 samples, 1.29%) + + + +org/dizitart/no2/internals/SearchService.find (676 samples, 1.29%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (670 samples, 1.28%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (500 samples, 0.96%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (128 samples, 0.25%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (128 samples, 0.25%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (75 samples, 0.14%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (48 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (244 samples, 0.47%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (235 samples, 0.45%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (215 samples, 0.41%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (172 samples, 0.33%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (126 samples, 0.24%) + + + +org/h2/mvstore/MVMap.getName (126 samples, 0.24%) + + + +org/h2/mvstore/MVStore.getMapName (126 samples, 0.24%) + + + +org/h2/mvstore/DataUtils.getMapName (62 samples, 0.12%) + + + +org/h2/mvstore/DataUtils.getFromMap (60 samples, 0.11%) + + + +org/h2/mvstore/DataUtils.parseMapValue (54 samples, 0.10%) + + + +org/h2/mvstore/MVMap.getMapKey (48 samples, 0.09%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (126 samples, 0.24%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (121 samples, 0.23%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (103 samples, 0.20%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (96 samples, 0.18%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (83 samples, 0.16%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (58 samples, 0.11%) + + + +org/h2/mvstore/MVMap.getName (58 samples, 0.11%) + + + +org/h2/mvstore/MVStore.getMapName (58 samples, 0.11%) + + + +org/dizitart/no2/util/ValidationUtils.validateSearchTerm (103 samples, 0.20%) + + + +org/dizitart/no2/mapper/GenericMapper.isValueType (74 samples, 0.14%) + + + +org/dizitart/no2/mapper/JacksonFacade.isValueType (74 samples, 0.14%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (74 samples, 0.14%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (59 samples, 0.11%) + + + +org/dizitart/no2/objects/ObjectCursor.firstOrDefault (393 samples, 0.75%) + + + +org/dizitart/no2/util/Iterables.firstOrDefault (393 samples, 0.75%) + + + +org/dizitart/no2/objects/ObjectCursor$ObjectCursorIterator.next (380 samples, 0.73%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (68 samples, 0.13%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (68 samples, 0.13%) + + + +org/dizitart/no2/store/NitriteMVMap.get (56 samples, 0.11%) + + + +org/h2/mvstore/MVMap.get (56 samples, 0.11%) + + + +org/h2/mvstore/MVMap.binarySearch (56 samples, 0.11%) + + + +org/dizitart/no2/mapper/AbstractMapper.asObject (310 samples, 0.59%) + + + +org/dizitart/no2/mapper/GenericMapper.asObjectInternal (308 samples, 0.59%) + + + +org/dizitart/no2/mapper/JacksonFacade.asObject (308 samples, 0.59%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (307 samples, 0.59%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (293 samples, 0.56%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.deserialize (102 samples, 0.20%) + + + +com/fasterxml/jackson/databind/deser/BeanDeserializer.vanillaDeserialize (102 samples, 0.20%) + + + +com/fasterxml/jackson/databind/util/TokenBuffer$Parser.nextToken (51 samples, 0.10%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (151 samples, 0.29%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (141 samples, 0.27%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (141 samples, 0.27%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serialize (141 samples, 0.27%) + + + +com/fasterxml/jackson/databind/ser/std/MapSerializer.serializeFields (129 samples, 0.25%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (216 samples, 0.41%) + + + +java/security/MessageDigest.digest (130 samples, 0.25%) + + + +java/security/MessageDigest.digest (128 samples, 0.25%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (128 samples, 0.25%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (128 samples, 0.25%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (128 samples, 0.25%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (119 samples, 0.23%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (116 samples, 0.22%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (94 samples, 0.18%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (83 samples, 0.16%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (83 samples, 0.16%) + + + +org/bouncycastle/util/encoders/Hex.encode (83 samples, 0.16%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (60 samples, 0.11%) + + + +java/io/ByteArrayOutputStream.write (47 samples, 0.09%) + + + +ru/mail/polis/maxciv/StorageService.putObject (4,038 samples, 7.73%) +ru/mail/pol.. + + +ru/mail/polis/maxciv/KVDaoImpl.upsert (3,988 samples, 7.63%) +ru/mail/po.. + + +org/dizitart/no2/objects/DefaultObjectRepository.update (3,618 samples, 6.93%) +org/dizit.. + + +org/dizitart/no2/internals/DefaultNitriteCollection.update (3,197 samples, 6.12%) +org/dizi.. + + +org/dizitart/no2/internals/NitriteService.update (3,192 samples, 6.11%) +org/dizi.. + + +org/dizitart/no2/internals/DataService.update (3,189 samples, 6.10%) +org/dizi.. + + +java/lang/StringBuilder.append (720 samples, 1.38%) + + + +java/lang/AbstractStringBuilder.append (127 samples, 0.24%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (62 samples, 0.12%) + + + +java/util/Arrays.copyOf (58 samples, 0.11%) + + + +java/lang/String.valueOf (565 samples, 1.08%) + + + +java/util/AbstractMap.toString (425 samples, 0.81%) + + + +java/lang/StringBuilder.append (384 samples, 0.74%) + + + +java/lang/String.valueOf (182 samples, 0.35%) + + + +java/lang/Object.toString (124 samples, 0.24%) + + + +java/lang/Object.hashCode (52 samples, 0.10%) + + + +java/lang/StringBuilder.append (170 samples, 0.33%) + + + +java/lang/AbstractStringBuilder.append (152 samples, 0.29%) + + + +java/lang/AbstractStringBuilder.ensureCapacityInternal (119 samples, 0.23%) + + + +org/dizitart/no2/internals/WriteResultImpl.toString (78 samples, 0.15%) + + + +java/lang/StringBuilder.append (69 samples, 0.13%) + + + +java/lang/String.valueOf (46 samples, 0.09%) + + + +java/util/AbstractCollection.toString (46 samples, 0.09%) + + + +java/util/HashMap.putAll (47 samples, 0.09%) + + + +java/util/HashMap.putMapEntries (46 samples, 0.09%) + + + +org/dizitart/no2/Document.<init> (67 samples, 0.13%) + + + +java/util/LinkedHashMap.<init> (67 samples, 0.13%) + + + +java/util/HashMap.putMapEntries (62 samples, 0.12%) + + + +org/dizitart/no2/Document.getSource (71 samples, 0.14%) + + + +java/util/HashMap.containsKey (69 samples, 0.13%) + + + +java/util/HashMap.getNode (65 samples, 0.12%) + + + +SharedRuntime::complete_monitor_locking_C(oopDesc*, BasicLock*, JavaThread*) (48 samples, 0.09%) + + + +ObjectMonitor::enter(Thread*) (47 samples, 0.09%) + + + +ObjectMonitor::EnterI(Thread*) (45 samples, 0.09%) + + + +org/dizitart/no2/internals/DataService.notify (399 samples, 0.76%) + + + +java/lang/StringBuilder.append (376 samples, 0.72%) + + + +java/lang/String.valueOf (335 samples, 0.64%) + + + +java/util/AbstractCollection.toString (333 samples, 0.64%) + + + +java/lang/StringBuilder.append (321 samples, 0.61%) + + + +java/lang/String.valueOf (249 samples, 0.48%) + + + +org/dizitart/no2/event/ChangedItem.toString (249 samples, 0.48%) + + + +java/lang/StringBuilder.append (246 samples, 0.47%) + + + +java/lang/String.valueOf (158 samples, 0.30%) + + + +java/util/AbstractMap.toString (158 samples, 0.30%) + + + +java/lang/StringBuilder.append (135 samples, 0.26%) + + + +java/lang/String.valueOf (61 samples, 0.12%) + + + +java/lang/StringBuilder.append (56 samples, 0.11%) + + + +java/lang/AbstractStringBuilder.append (51 samples, 0.10%) + + + +java/lang/StringBuilder.append (62 samples, 0.12%) + + + +java/lang/AbstractStringBuilder.append (62 samples, 0.12%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (86 samples, 0.16%) + + + +org/dizitart/no2/internals/DocumentCursor$DocumentCursorIterator.next (86 samples, 0.16%) + + + +org/dizitart/no2/store/NitriteMVMap.get (61 samples, 0.12%) + + + +org/h2/mvstore/MVMap.get (61 samples, 0.12%) + + + +org/h2/mvstore/MVMap.binarySearch (61 samples, 0.12%) + + + +org/dizitart/no2/internals/IndexingService.refreshIndexEntry (611 samples, 1.17%) + + + +org/dizitart/no2/internals/IndexMetaService.findIndex (508 samples, 0.97%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (473 samples, 0.91%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (388 samples, 0.74%) + + + +java/lang/StringBuilder.append (62 samples, 0.12%) + + + +java/lang/AbstractStringBuilder.append (62 samples, 0.12%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (274 samples, 0.52%) + + + +org/h2/mvstore/MVMap.getName (274 samples, 0.52%) + + + +org/h2/mvstore/MVStore.getMapName (274 samples, 0.52%) + + + +org/h2/mvstore/DataUtils.getMapName (170 samples, 0.33%) + + + +org/h2/mvstore/DataUtils.getFromMap (161 samples, 0.31%) + + + +org/h2/mvstore/DataUtils.parseMapValue (144 samples, 0.28%) + + + +java/lang/StringBuilder.append (71 samples, 0.14%) + + + +java/lang/AbstractStringBuilder.append (71 samples, 0.14%) + + + +org/h2/mvstore/MVMap.getMapKey (81 samples, 0.16%) + + + +org/dizitart/no2/store/NitriteMVStore.openMap (75 samples, 0.14%) + + + +org/h2/mvstore/MVStore.openMap (75 samples, 0.14%) + + + +org/h2/mvstore/MVStore.openMap (75 samples, 0.14%) + + + +org/dizitart/no2/util/DocumentUtils.getFields (71 samples, 0.14%) + + + +org/dizitart/no2/util/DocumentUtils.getFieldsInternal (71 samples, 0.14%) + + + +java/util/TreeSet.add (45 samples, 0.09%) + + + +org/dizitart/no2/internals/SearchService.find (608 samples, 1.16%) + + + +org/dizitart/no2/objects/filters/EqualsObjectFilter.apply (584 samples, 1.12%) + + + +org/dizitart/no2/filters/EqualsFilter.apply (498 samples, 0.95%) + + + +org/dizitart/no2/internals/NitriteService.findEqualWithIndex (137 samples, 0.26%) + + + +org/dizitart/no2/internals/IndexedSearchService.findEqual (119 samples, 0.23%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMap (80 samples, 0.15%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (55 samples, 0.11%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (51 samples, 0.10%) + + + +org/dizitart/no2/internals/NitriteService.hasIndex (182 samples, 0.35%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (178 samples, 0.34%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (166 samples, 0.32%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (132 samples, 0.25%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (94 samples, 0.18%) + + + +org/h2/mvstore/MVMap.getName (94 samples, 0.18%) + + + +org/h2/mvstore/MVStore.getMapName (94 samples, 0.18%) + + + +org/dizitart/no2/internals/NitriteService.isIndexing (176 samples, 0.34%) + + + +org/dizitart/no2/internals/IndexingService.isIndexing (166 samples, 0.32%) + + + +org/dizitart/no2/internals/IndexMetaService.hasIndex (123 samples, 0.24%) + + + +org/dizitart/no2/internals/IndexMetaService.getIndexMetadata (108 samples, 0.21%) + + + +org/dizitart/no2/internals/IndexMetaService.getName (83 samples, 0.16%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (59 samples, 0.11%) + + + +org/h2/mvstore/MVMap.getName (59 samples, 0.11%) + + + +org/h2/mvstore/MVStore.getMapName (59 samples, 0.11%) + + + +org/dizitart/no2/util/ValidationUtils.validateSearchTerm (54 samples, 0.10%) + + + +org/dizitart/no2/mapper/GenericMapper.isValueType (45 samples, 0.09%) + + + +org/dizitart/no2/mapper/JacksonFacade.isValueType (45 samples, 0.09%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (45 samples, 0.09%) + + + +org/dizitart/no2/store/NitriteMVMap.put (322 samples, 0.62%) + + + +org/dizitart/no2/store/NitriteMVMap.updateAttributes (174 samples, 0.33%) + + + +org/dizitart/no2/store/NitriteMVMap.getName (119 samples, 0.23%) + + + +org/h2/mvstore/MVMap.getName (119 samples, 0.23%) + + + +org/h2/mvstore/MVStore.getMapName (118 samples, 0.23%) + + + +org/h2/mvstore/DataUtils.getMapName (70 samples, 0.13%) + + + +org/h2/mvstore/DataUtils.getFromMap (67 samples, 0.13%) + + + +org/h2/mvstore/DataUtils.parseMapValue (58 samples, 0.11%) + + + +org/h2/mvstore/MVMap.put (148 samples, 0.28%) + + + +org/h2/mvstore/MVMap.put (124 samples, 0.24%) + + + +org/h2/mvstore/MVMap.put (62 samples, 0.12%) + + + +org/h2/mvstore/MVMap.put (46 samples, 0.09%) + + + +org/dizitart/no2/objects/DefaultObjectRepository.asDocument (400 samples, 0.77%) + + + +org/dizitart/no2/util/ObjectUtils.toDocument (400 samples, 0.77%) + + + +org/dizitart/no2/mapper/AbstractMapper.asDocument (399 samples, 0.76%) + + + +org/dizitart/no2/mapper/GenericMapper.asDocumentInternal (398 samples, 0.76%) + + + +org/dizitart/no2/mapper/JacksonFacade.asDocument (396 samples, 0.76%) + + + +com/fasterxml/jackson/databind/ObjectMapper.convertValue (283 samples, 0.54%) + + + +com/fasterxml/jackson/databind/ObjectMapper._convert (265 samples, 0.51%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (115 samples, 0.22%) + + + +com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.deserialize (115 samples, 0.22%) + + + +com/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer.deserializeObject (102 samples, 0.20%) + + + +com/fasterxml/jackson/databind/node/ObjectNode.replace (52 samples, 0.10%) + + + +java/util/HashMap.put (52 samples, 0.10%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider.serializeValue (104 samples, 0.20%) + + + +com/fasterxml/jackson/databind/ser/DefaultSerializerProvider._serialize (96 samples, 0.18%) + + + +com/fasterxml/jackson/databind/ser/BeanSerializer.serialize (96 samples, 0.18%) + + + +com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.serializeFields (93 samples, 0.18%) + + + +com/fasterxml/jackson/databind/ser/BeanPropertyWriter.serializeAsField (86 samples, 0.16%) + + + +java/lang/reflect/Field.get (62 samples, 0.12%) + + + +sun/reflect/UnsafeObjectFieldAccessorImpl.get (50 samples, 0.10%) + + + +sun/reflect/UnsafeFieldAccessorImpl.ensureObj (49 samples, 0.09%) + + + +org/dizitart/no2/mapper/JacksonFacade.loadDocument (111 samples, 0.21%) + + + +org/dizitart/no2/mapper/JacksonFacade.loadObject (46 samples, 0.09%) + + + +ru/mail/polis/maxciv/util/CommonUtils.bytesToSha3Hex (310 samples, 0.59%) + + + +java/security/MessageDigest.digest (147 samples, 0.28%) + + + +java/security/MessageDigest.digest (118 samples, 0.23%) + + + +org/bouncycastle/jcajce/provider/digest/BCMessageDigest.engineDigest (116 samples, 0.22%) + + + +org/bouncycastle/crypto/digests/SHA3Digest.doFinal (116 samples, 0.22%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.doFinal (115 samples, 0.22%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.squeeze (112 samples, 0.21%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.padAndSwitchToSqueezingPhase (110 samples, 0.21%) + + + +org/bouncycastle/crypto/digests/KeccakDigest.KeccakPermutation (98 samples, 0.19%) + + + +org/bouncycastle/jcajce/provider/digest/SHA3$Digest256.<init> (77 samples, 0.15%) + + + +org/bouncycastle/jcajce/provider/digest/SHA3$DigestSHA3.<init> (70 samples, 0.13%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (81 samples, 0.16%) + + + +org/bouncycastle/util/encoders/Hex.toHexString (81 samples, 0.16%) + + + +org/bouncycastle/util/encoders/Hex.encode (71 samples, 0.14%) + + + +org/bouncycastle/util/encoders/HexEncoder.encode (53 samples, 0.10%) + + + +ru/mail/polis/maxciv/KVServiceImpl.handleDefault (478 samples, 0.92%) + + + +one/nio/http/HttpSession.sendResponse (474 samples, 0.91%) + + + +one/nio/http/HttpSession.writeResponse (463 samples, 0.89%) + + + +one/nio/net/Session.write (450 samples, 0.86%) + + + +one/nio/net/Session.write (450 samples, 0.86%) + + + +one/nio/net/Session.write (446 samples, 0.85%) + + + +one/nio/net/Session$ArrayQueueItem.write (436 samples, 0.83%) + + + +one/nio/net/JavaSocket.write (434 samples, 0.83%) + + + +sun/nio/ch/SocketChannelImpl.write (434 samples, 0.83%) + + + +sun/nio/ch/IOUtil.write (424 samples, 0.81%) + + + +sun/nio/ch/IOUtil.writeFromNativeBuffer (401 samples, 0.77%) + + + +sun/nio/ch/SocketDispatcher.write (399 samples, 0.76%) + + + +sun/nio/ch/FileDispatcherImpl.write0 (399 samples, 0.76%) + + + +write (376 samples, 0.72%) + + + +one/nio/http/HttpSession.parseRequest (262 samples, 0.50%) + + + +one/nio/http/Request.<init> (79 samples, 0.15%) + + + +java/lang/String.indexOf (75 samples, 0.14%) + + + +java/lang/String.indexOf (74 samples, 0.14%) + + + +one/nio/util/Utf8.read (132 samples, 0.25%) + + + +one/nio/util/Utf8.read (121 samples, 0.23%) + + + +java/lang/String.<init> (87 samples, 0.17%) + + + +java/util/Arrays.copyOfRange (83 samples, 0.16%) + + + +one/nio/http/Request.getHeader (112 samples, 0.21%) + + + +java/lang/String.regionMatches (51 samples, 0.10%) + + + +one/nio/util/Utf8.read (149 samples, 0.29%) + + + +one/nio/util/Utf8.read (149 samples, 0.29%) + + + +java/lang/String.<init> (70 samples, 0.13%) + + + +java/util/Arrays.copyOfRange (63 samples, 0.12%) + + + +one/nio/net/Session.read (1,524 samples, 2.92%) +on.. + + +one/nio/net/JavaSocket.read (1,512 samples, 2.89%) +on.. + + +sun/nio/ch/SocketChannelImpl.read (1,509 samples, 2.89%) +su.. + + +sun/nio/ch/IOUtil.read (1,389 samples, 2.66%) +su.. + + +java/nio/HeapByteBuffer.put (45 samples, 0.09%) + + + +sun/nio/ch/IOUtil.readIntoNativeBuffer (1,142 samples, 2.19%) +s.. + + +sun/nio/ch/SocketDispatcher.read (1,142 samples, 2.19%) +s.. + + +sun/nio/ch/FileDispatcherImpl.read0 (1,142 samples, 2.19%) +s.. + + +read (1,054 samples, 2.02%) +r.. + + +sun/nio/ch/Util.getTemporaryDirectBuffer (117 samples, 0.22%) + + + +java/lang/ThreadLocal.get (52 samples, 0.10%) + + + +sun/nio/ch/NativeThread.current (55 samples, 0.11%) + + + +org/h2/mvstore/MVStore$BackgroundWriterThread.run (45 samples, 0.09%) + + + +os::javaTimeNanos() (54 samples, 0.10%) + + + +thread_start (2,556 samples, 4.89%) +thread.. + + +_pthread_start (2,556 samples, 4.89%) +_pthre.. + + +_pthread_body (2,556 samples, 4.89%) +_pthre.. + + +java_start(Thread*) (2,556 samples, 4.89%) +java_s.. + + +GCTaskThread::run() (765 samples, 1.46%) + + + +GCTaskManager::get_task(unsigned int) (258 samples, 0.49%) + + + +Monitor::wait(bool, long, bool) (251 samples, 0.48%) + + + +Monitor::IWait(Thread*, long) (251 samples, 0.48%) + + + +ParkCommon(ParkEvent*, long) (206 samples, 0.39%) + + + +os::PlatformEvent::park() (203 samples, 0.39%) + + + +__psynch_cvwait (190 samples, 0.36%) + + + +StealTask::do_it(GCTaskManager*, unsigned int) (380 samples, 0.73%) + + + +SpinPause (345 samples, 0.66%) + + + +JavaThread::run() (1,483 samples, 2.84%) +Ja.. + + +JavaThread::thread_main_inner() (1,483 samples, 2.84%) +Ja.. + + +CompileBroker::compiler_thread_loop() (1,475 samples, 2.82%) +Co.. + + +CompileBroker::invoke_compiler_on_method(CompileTask*) (1,455 samples, 2.79%) +Co.. + + +C2Compiler::compile_method(ciEnv*, ciMethod*, int) (1,398 samples, 2.68%) +C2.. + + +Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool) (1,397 samples, 2.67%) +Co.. + + +Compile::Code_Gen() (377 samples, 0.72%) + + + +PhaseChaitin::Register_Allocate() (280 samples, 0.54%) + + + +PhaseChaitin::build_ifg_physical(ResourceArea*) (53 samples, 0.10%) + + + +Compile::Optimize() (939 samples, 1.80%) +C.. + + +PhaseIdealLoop::build_and_optimize(bool, bool) (870 samples, 1.67%) + + + +PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&) (791 samples, 1.51%) + + + +PhaseIdealLoop::build_loop_late_post(Node*) (769 samples, 1.47%) + + + +PhaseIdealLoop::get_late_ctrl(Node*, Node*) (755 samples, 1.45%) + + + +PhaseIdealLoop::is_dominator(Node*, Node*) (705 samples, 1.35%) + + + +PhaseIdealLoop::dom_depth(Node*) const (100 samples, 0.19%) + + + +PhaseIdealLoop::idom_no_update(Node*) const (513 samples, 0.98%) + + + +ParseGenerator::generate(JVMState*) (59 samples, 0.11%) + + + +Parse::Parse(JVMState*, ciMethod*, float) (59 samples, 0.11%) + + + +Parse::do_all_blocks() (59 samples, 0.11%) + + + +Parse::do_one_block() (59 samples, 0.11%) + + + +Parse::do_one_bytecode() (58 samples, 0.11%) + + + +Parse::do_call() (52 samples, 0.10%) + + + +Compiler::compile_method(ciEnv*, ciMethod*, int) (52 samples, 0.10%) + + + +Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*) (52 samples, 0.10%) + + + +Compilation::compile_method() (52 samples, 0.10%) + + + +Compilation::compile_java_method() (47 samples, 0.09%) + + + +VMThread::run() (298 samples, 0.57%) + + + +VMThread::loop() (298 samples, 0.57%) + + + +SafepointSynchronize::begin() (64 samples, 0.12%) + + + +SafepointSynchronize::do_cleanup_tasks() (53 samples, 0.10%) + + + +VMThread::evaluate_operation(VM_Operation*) (221 samples, 0.42%) + + + +VM_Operation::evaluate() (221 samples, 0.42%) + + + +VM_ParallelGCFailedAllocation::doit() (221 samples, 0.42%) + + + +ParallelScavengeHeap::failed_mem_allocate(unsigned long) (220 samples, 0.42%) + + + +PSScavenge::invoke() (220 samples, 0.42%) + + + +PSScavenge::invoke_no_policy() (218 samples, 0.42%) + + + +StringTable::unlink_or_oops_do(BoolObjectClosure*, OopClosure*, int*, int*) (182 samples, 0.35%) + + + +StringTable::buckets_unlink_or_oops_do(BoolObjectClosure*, OopClosure*, int, int, BasicHashtable<(MemoryType)9>::BucketUnlinkContext*) (174 samples, 0.33%) + + + diff --git a/src/main/java/ru/mail/polis/maxciv/KVDaoImpl.java b/src/main/java/ru/mail/polis/maxciv/KVDaoImpl.java index 24a4293f..6b66200a 100644 --- a/src/main/java/ru/mail/polis/maxciv/KVDaoImpl.java +++ b/src/main/java/ru/mail/polis/maxciv/KVDaoImpl.java @@ -5,6 +5,8 @@ import org.dizitart.no2.Nitrite; import org.dizitart.no2.objects.ObjectRepository; import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.mail.polis.KVDao; import ru.mail.polis.maxciv.data.KVObject; @@ -17,6 +19,8 @@ public class KVDaoImpl implements KVDao { + private static final Logger LOGGER = LoggerFactory.getLogger(KVDaoImpl.class); + private final ObjectRepository repository; private final Cache cache; private final Nitrite db; @@ -26,8 +30,8 @@ public KVDaoImpl(@NotNull File baseDir) { .filePath(baseDir.getPath() + File.separator + "key_value.db") .openOrCreate(); repository = db.getRepository(KVObject.class); - cache = new Cache2kBuilder() { - }.eternal(true) + cache = new Cache2kBuilder() {} + .eternal(true) .entryCapacity(100) .build(); } @@ -54,7 +58,7 @@ public void upsert(@NotNull byte[] key, @NotNull byte[] value) { repository.update(eq("keyHex", keyHex), kvObject, true); cache.put(keyHex, kvObject); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Error while upsert value with keyHex={}", keyHex, e); } } diff --git a/src/main/java/ru/mail/polis/maxciv/KVServiceImpl.java b/src/main/java/ru/mail/polis/maxciv/KVServiceImpl.java index f9e5f271..1d0b6c7e 100644 --- a/src/main/java/ru/mail/polis/maxciv/KVServiceImpl.java +++ b/src/main/java/ru/mail/polis/maxciv/KVServiceImpl.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.util.Set; +import static one.nio.http.Response.ok; import static ru.mail.polis.maxciv.util.CommonUtils.createServerConfig; import static ru.mail.polis.maxciv.util.ResponceUtils.badRequest; @@ -28,7 +29,7 @@ public KVServiceImpl(int port, KVDao dao, Set topology) throws IOExcepti @Path("/v0/status") public Response handleStatus() { - return Response.ok("Status: OK"); + return ok("Status: OK"); } @Path("/v0/entity") diff --git a/src/main/java/ru/mail/polis/maxciv/StorageService.java b/src/main/java/ru/mail/polis/maxciv/StorageService.java index c910a3b9..933e4b52 100644 --- a/src/main/java/ru/mail/polis/maxciv/StorageService.java +++ b/src/main/java/ru/mail/polis/maxciv/StorageService.java @@ -7,6 +7,7 @@ import java.nio.charset.Charset; import java.util.NoSuchElementException; +import static one.nio.http.Response.ok; import static ru.mail.polis.maxciv.util.ResponceUtils.accepted; import static ru.mail.polis.maxciv.util.ResponceUtils.created; import static ru.mail.polis.maxciv.util.ResponceUtils.notFound; @@ -27,7 +28,7 @@ public Response getObject(String key) { try { KVObject object = dao.getObject(key.getBytes(Charset.forName("UTF-8"))); - response = Response.ok(object.getValue()); + response = ok(object.getValue()); response.addHeader(ENTITY_TIMESTAMP_HEADER + object.getTimestamp().getTime()); if (object.getRemoved()) diff --git a/src/main/java/ru/mail/polis/maxciv/cluster/Node.java b/src/main/java/ru/mail/polis/maxciv/cluster/Node.java index 07afb327..b206fe2b 100644 --- a/src/main/java/ru/mail/polis/maxciv/cluster/Node.java +++ b/src/main/java/ru/mail/polis/maxciv/cluster/Node.java @@ -9,11 +9,13 @@ public class Node { private final String idSha3; private final int port; private final HttpClient httpClient; + private final String connectionString; Node(String connectionString) { this.idSha3 = CommonUtils.bytesToSha3Hex(connectionString.getBytes()); this.port = Integer.valueOf(connectionString.split(":")[2]); - httpClient = new HttpClient(new ConnectionString(connectionString)); + this.httpClient = new HttpClient(new ConnectionString(connectionString)); + this.connectionString = connectionString; } int getDistance(String stringSha3) { @@ -27,4 +29,8 @@ public int getPort() { public HttpClient getHttpClient() { return httpClient; } + + public String getConnectionString() { + return connectionString; + } } diff --git a/src/main/java/ru/mail/polis/maxciv/cluster/NodesManager.java b/src/main/java/ru/mail/polis/maxciv/cluster/NodesManager.java index c02bb5c4..0b2d4c8f 100644 --- a/src/main/java/ru/mail/polis/maxciv/cluster/NodesManager.java +++ b/src/main/java/ru/mail/polis/maxciv/cluster/NodesManager.java @@ -2,6 +2,8 @@ import one.nio.http.Request; import one.nio.http.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.mail.polis.KVDao; import ru.mail.polis.maxciv.StorageService; import ru.mail.polis.maxciv.data.ReplicasConfig; @@ -35,6 +37,8 @@ public class NodesManager implements ClusterController { + private static final Logger LOGGER = LoggerFactory.getLogger(NodesManager.class); + private final StorageService localStorageService; private final int currentPort; private final Set topology; @@ -83,6 +87,7 @@ public Response handleEntityRequest(Request request, String id, byte[] body, Str return methodNotAllowed(); } } catch (Exception e) { + LOGGER.error("Error while handleEntityRequest {}", request.getMethod(), e); return internalError(); } } @@ -94,7 +99,7 @@ private Response getObject(String key, ReplicasConfig replicasConfig) throws Exc .collect(Collectors.toList()); CompletionService completionService = new Caller(executorService) - .makeAllCallsInParallel(calls.subList(0,replicasConfig.getFrom())); + .makeAllCallsInParallel(calls.subList(0, replicasConfig.getFrom())); int ackCount = 0; boolean removedFlag = false; @@ -116,13 +121,9 @@ private Response getObject(String key, ReplicasConfig replicasConfig) throws Exc } } } - if (ackCount >= replicasConfig.getAck()) { - if (removedFlag || resultValue == null) { - return notFound(); - } else { - return ok(resultValue); - } - } + if (ackCount >= replicasConfig.getAck()) return (removedFlag || resultValue == null) + ? notFound() + : ok(resultValue); } return gatewayTimeout(); } @@ -134,18 +135,16 @@ private Response putObject(String key, byte[] value, ReplicasConfig replicasConf .collect(Collectors.toList()); CompletionService completionService = new Caller(executorService) - .makeAllCallsInParallel(calls.subList(0,replicasConfig.getFrom())); + .makeAllCallsInParallel(calls.subList(0, replicasConfig.getFrom())); int ackCount = 0; for (int i = 0; i < replicasConfig.getFrom(); i++) { Response response = completionService.take().get(); - if (response != null && response.getStatus() == STATUS_CREATED) { + if (response != null && response.getStatus() == STATUS_CREATED) ackCount++; - } + if (ackCount >= replicasConfig.getAck()) + return created(); } - if (ackCount >= replicasConfig.getAck()) - return created(); - return gatewayTimeout(); } @@ -156,18 +155,16 @@ private Response deleteObject(String key, ReplicasConfig replicasConfig) throws .collect(Collectors.toList()); CompletionService completionService = new Caller(executorService) - .makeAllCallsInParallel(calls.subList(0,replicasConfig.getFrom())); + .makeAllCallsInParallel(calls.subList(0, replicasConfig.getFrom())); int ackCount = 0; for (int i = 0; i < replicasConfig.getFrom(); i++) { Response response = completionService.take().get(); - if (response != null && response.getStatus() == STATUS_ACCEPTED) { + if (response != null && response.getStatus() == STATUS_ACCEPTED) ackCount++; - } + if (ackCount >= replicasConfig.getAck()) + return accepted(); } - if (ackCount >= replicasConfig.getAck()) - return accepted(); - return gatewayTimeout(); } diff --git a/src/main/java/ru/mail/polis/maxciv/future/DeleteCall.java b/src/main/java/ru/mail/polis/maxciv/future/DeleteCall.java index 81439eed..669a6e20 100644 --- a/src/main/java/ru/mail/polis/maxciv/future/DeleteCall.java +++ b/src/main/java/ru/mail/polis/maxciv/future/DeleteCall.java @@ -1,6 +1,8 @@ package ru.mail.polis.maxciv.future; import one.nio.http.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.mail.polis.maxciv.StorageService; import ru.mail.polis.maxciv.cluster.Node; @@ -8,6 +10,8 @@ public class DeleteCall extends MethodFutureCall { + private static final Logger LOGGER = LoggerFactory.getLogger(DeleteCall.class); + public DeleteCall(Node node, StorageService storageService, String key, boolean isLocal) { super(node, storageService, key, isLocal); } @@ -22,7 +26,7 @@ private Response delete() { try { return getNode().getHttpClient().delete(REPLICATION_REQUEST_URL + getKey()); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Error while call remote DELETE request to {}", getNode().getConnectionString(), e); return internalError(); } } diff --git a/src/main/java/ru/mail/polis/maxciv/future/GetCall.java b/src/main/java/ru/mail/polis/maxciv/future/GetCall.java index 2629748d..9af37471 100644 --- a/src/main/java/ru/mail/polis/maxciv/future/GetCall.java +++ b/src/main/java/ru/mail/polis/maxciv/future/GetCall.java @@ -1,6 +1,8 @@ package ru.mail.polis.maxciv.future; import one.nio.http.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.mail.polis.maxciv.StorageService; import ru.mail.polis.maxciv.cluster.Node; @@ -8,6 +10,8 @@ public class GetCall extends MethodFutureCall { + private static final Logger LOGGER = LoggerFactory.getLogger(GetCall.class); + public GetCall(Node node, StorageService storageService, String key, boolean isLocal) { super(node, storageService, key, isLocal); } @@ -22,7 +26,7 @@ private Response get() { try { return getNode().getHttpClient().get(REPLICATION_REQUEST_URL + getKey()); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Error while call remote GET request to {}", getNode().getConnectionString(), e); return internalError(); } } diff --git a/src/main/java/ru/mail/polis/maxciv/future/PutCall.java b/src/main/java/ru/mail/polis/maxciv/future/PutCall.java index b6b0c8ab..91c33de8 100644 --- a/src/main/java/ru/mail/polis/maxciv/future/PutCall.java +++ b/src/main/java/ru/mail/polis/maxciv/future/PutCall.java @@ -1,6 +1,8 @@ package ru.mail.polis.maxciv.future; import one.nio.http.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.mail.polis.maxciv.StorageService; import ru.mail.polis.maxciv.cluster.Node; @@ -8,6 +10,8 @@ public class PutCall extends MethodFutureCall { + private static final Logger LOGGER = LoggerFactory.getLogger(PutCall.class); + private final byte[] value; public PutCall(Node node, StorageService storageService, String key, boolean isLocal, byte[] value) { @@ -25,7 +29,7 @@ private Response put() { try { return getNode().getHttpClient().put(REPLICATION_REQUEST_URL + getKey(), value); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Error while call remote PUT request to {}", getNode().getConnectionString(), e); return internalError(); } }