From 964577235818d4811912821e44c3ef8961a226c0 Mon Sep 17 00:00:00 2001 From: Prasad Kommoju Date: Wed, 12 May 2021 11:34:48 -0700 Subject: [PATCH 1/5] Documentation update Add document about transactional semantics for Alcor Caches in general and spefically about Ignite Caches. --- .../pages/db_services/alcor-transactions.adoc | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 docs/modules/ROOT/pages/db_services/alcor-transactions.adoc diff --git a/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc b/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc new file mode 100644 index 000000000..c96a7cf00 --- /dev/null +++ b/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc @@ -0,0 +1,162 @@ +== Transactions in Alcor +Prasad Kommoju + +v.01, 2021-05-05 + +:toc: right + +== Overview + +This document explains the role of transactions in Alcor and provides a set of guidelines for new services and caches to follow so that they conform to the behavior required. + + +== Brief introduction to transactions + +A transaction is a term from database world. Where it refers to some work by the code which changes some persistent data. For the state of the program to be consistent, either all of it is done, or no part of it is done. This property of all or nothing of transactions is called atomicity. + +Another property of transactions is called isolation, which means, even when multiple processes and threads operate on a data item simultaneously, the end result should be as if they were done in a specific order and not in some arbitrarily interleaved order. Furthermore, at any point of time the execution of these changes the data remains in a consistent state. The concepts are the same in Alcor. + +In Alcor there are many data stores to store the state of the system. Currently the data store is Apache Ignite but the general concepts and techniques laid down by these guidelines apply to any data store. In this document, cache and store are used interchangeably where this is no ambiguity. + +Ignite supports three modes of transactions: + + 1) ATMOIC: In DBMS world, this is called AUTO COMMIT. If an individual data store operation succeeds, its effects are made permanent immediately. There is no way to ask the system to undo the changes. If it fails, the attempted changes are thrown away. Code itself will have to handle undoing the changes if some other condition warrants it. + + 2) TRANSACTIONAL: In DBMS world, this is called MANUAL COMMIT. The code will have to start a transaction, and if everything is good, it will have to issue a COMMIT to make the changes permanent. If for any reason, the changes already made need to be undone, then the code issues a ROLLBACK. If the code does not start a transaction, or explicitly ask for a COMMIT, all changes will be thrown away. + + 3) TRANSACTAIONAL_SNAPSHOT: Not applicable for K-V stores, which are what Alcor uses. It is Applicable to SQL objects only. + +== Transactions in Alcor + +The three main requirements of transactions in Alcor cane be summarized as follows: + +1) Single operations +2) Multicache operations +3) Multi microservice operations +4) Reading a snapshot view of cache(s). + +=== Single cache operations +When a cache is modified in some way and some other condition fails because of errors or exceptions, the cache operation will have to reverted to bring the cache to its original state. + +=== Multicache operations +Some operations may require modifying more than one cache at the same time and in atomic manner. If a later cache operation fails, all of the previously successful cache operations will have to be reverted. Ignite requires that all caches under a transaction have the same transactional mode, either all are ATOMIC, or all are TRANSACTIONAL. Trying to mix operations on multiple caches having multiple atomicity modes will result in an exception. + +=== Multi microservice operations +Each micro service has its own data store and works independently of others but in a coordinated manner. When an operation involves atomic modification of caches owned by more than microservice, one failed operation will have to revert previously successful cache operations. + +=== Reading a snapshot view of cache(s) +Even when an operation requires only reading of a cache, in order to avoid certain anomalous conditions a transaction will be required, specifically, a particular form of isolation property of transactions. + +Transactions and their atomicity and isolation properties ensure that the caches are always consistent, but they come at a cost - reduced concurrency and thus performance. + + +This document focuses on (1) and (2). (3) is now handled by handcrafted rollback mechanism, which is not correct or robust, and possibly expensive too. We will address this later by using the mechanisms supported by the underlying data store. + +Also, this document focuses on Ignite because that is what the current data store is. More or less the same approaches will be needed if another data store were to be used. + +== Enabling TRANSACTONAL Atomicity of Caches + +There are two ways add transactional semantics to Alcor code: + +1) Ignite configuration + +2) Basing the cache on a specific kind of base class + + +=== Ignite configuration +In the Ignite configuration file (Kubernetes/services/ignite_config.xml) used in K8S, or local ignite config file (config/ignite-config.xml) in the Alcor source root. + + a) Add a Bean under the property "cacheConfiguration" + + + + + + + + + + +CACHE_NAME should match the name passed to getCache() method of the cache factory. Usually, this is simply getCache(CacheClass.class) but it could be a hard coded one like getCache("dpm_node_info") when the same class is the type of the Value of entry in the cache. + +If CacheClass.class is passed as the name, then value property should be set to the canonical name of that class. For instance, creating a cache with getCache(PortEntity.class) will requires the value to be set to "com.futurewei.alcor.web.entity.port.PortEntity". + +If more than one cache is instantiated as in ICache and getCache called with VType.class, all of them will be known to Ignite by the same name and represent the same physical cache store. If this is not the desired behavior, then different caches of VType instantiations should use a different name in getCache(). + +=== Basing the cache on a specific kind of base class +This is not supported at the time at a finer granularity. The reason is that Ignite does not seem to allow changing the atomicity of a cache after it has been created. + +Regardless of which of the two methods is followed, if the given cache is housed in a class by it self, or along with one or more other caches, the following guidelines apply. In the first case, it is optional but in the second case it is strongly recommended. + +The class definition for the cache will have to + +* Declare a data member of type CacheFactory +* Assign to CacheFactory data member the parameter of type CacheFactoty passed into the constructor, +* Define a public method getTransaction() which returns cacheFactory.getTransaction(). + +This purpose of this guidelines is to minimize code changes outside the class housing the cache object if and when the manner of obtaining a transaction from the underlying data store changes. + +==== Illustration: +---- +public class MyCache { + private ICache myCache; + private CacheFactory cacheFactory; + + @Autowired + public MyCache(CacheFactory cacheFactory) { + this.cacheFactory = cacheFactory; + this.myCache = cacheFactory.getCache(Vtype.class); + } + + ... + + public Transaction getTransaction() { + return cacheFactory.getTransaction(); + } + + ... +} +---- + +== Working under TRANSACATIONAL atomicity + +Alcor code which interfaces to Ignite caches is structured in such a way that all caches opened or created by a specific "connection" to Ignite all share a common "Ignite client". All these caches have a getTransaction() method which ultimately resolves to the same transaction object. + + +Single cache operations should adhere to the following pattern: + +---- + ... + try { + Transaction txn = myCache.getTransaction().start(); + myCache.put(...); + myCache.remove(...); + ... + txn.commit(); + } + catch (...) { + // log a message and anything else required. + // No need to "Undo" the effects of put(), and remove() + } + ... +---- + +Multi cache operations should adhere to the following pattern: + +---- + ... + try { + Transaction txn = firstCache.getTransaction().start(); + firstCache.put(...); + secondCache.remove(...); + ... + txn.commit(); + } + catch (...) { + // log a message and anything else required. + // No need to "Undo" the effects of put(), and remove() + } + ... +---- + + That is, start a transaction on any one of the caches whose changes should be applied in all or nothing manner, do the operations on all of them and commit when conditions are appropriate. If a throw happens, there is no need to "undo" the cache changes. If some other error is detetected, inside the try block, it might be easier to log it and throw an exception so that the data store automatically rollback changes applied by earlier code. From 183c36a75d63562f99cd4b76b696903f41385cc6 Mon Sep 17 00:00:00 2001 From: Prasad Kommoju Date: Fri, 21 May 2021 17:44:56 -0700 Subject: [PATCH 2/5] Apply changes suggested in review --- .../pages/db_services/alcor-transactions.adoc | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc b/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc index c96a7cf00..4c6574053 100644 --- a/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc +++ b/docs/modules/ROOT/pages/db_services/alcor-transactions.adoc @@ -1,8 +1,6 @@ -== Transactions in Alcor += Transactions in Alcor Prasad Kommoju - v.01, 2021-05-05 - :toc: right == Overview @@ -41,7 +39,7 @@ When a cache is modified in some way and some other condition fails because of e === Multicache operations Some operations may require modifying more than one cache at the same time and in atomic manner. If a later cache operation fails, all of the previously successful cache operations will have to be reverted. Ignite requires that all caches under a transaction have the same transactional mode, either all are ATOMIC, or all are TRANSACTIONAL. Trying to mix operations on multiple caches having multiple atomicity modes will result in an exception. -=== Multi microservice operations +=== Multi microservice operations Each micro service has its own data store and works independently of others but in a coordinated manner. When an operation involves atomic modification of caches owned by more than microservice, one failed operation will have to revert previously successful cache operations. === Reading a snapshot view of cache(s) @@ -81,10 +79,10 @@ CACHE_NAME should match the name passed to getCache() method of the cache factor If CacheClass.class is passed as the name, then value property should be set to the canonical name of that class. For instance, creating a cache with getCache(PortEntity.class) will requires the value to be set to "com.futurewei.alcor.web.entity.port.PortEntity". -If more than one cache is instantiated as in ICache and getCache called with VType.class, all of them will be known to Ignite by the same name and represent the same physical cache store. If this is not the desired behavior, then different caches of VType instantiations should use a different name in getCache(). +If more than one cache is instantiated as in ICache and getCache called with VType.class, all of them will be known to Ignite by the same name and represent the same physical cache store. If this is not the desired behavior, then different caches of VType instantiations should use a different name in getCache(). === Basing the cache on a specific kind of base class -This is not supported at the time at a finer granularity. The reason is that Ignite does not seem to allow changing the atomicity of a cache after it has been created. +This is not supported at the time at a finer granularity. The reason is that Ignite does not allow changing the atomicity of a cache after it has been created. Regardless of which of the two methods is followed, if the given cache is housed in a class by it self, or along with one or more other caches, the following guidelines apply. In the first case, it is optional but in the second case it is strongly recommended. @@ -99,22 +97,23 @@ This purpose of this guidelines is to minimize code changes outside the class ho ==== Illustration: ---- public class MyCache { - private ICache myCache; - private CacheFactory cacheFactory; - - @Autowired - public MyCache(CacheFactory cacheFactory) { - this.cacheFactory = cacheFactory; - this.myCache = cacheFactory.getCache(Vtype.class); - } - - ... + private ICache myCache; + private CacheFactory cacheFactory; + + @Autowired + public MyCache(CacheFactory cacheFactory) { + this.cacheFactory = cacheFactory; + this.myCache = cacheFactory.getCache(Vtype.class); +} + +... + +public Transaction getTransaction() { + return cacheFactory.getTransaction(); +} + +... - public Transaction getTransaction() { - return cacheFactory.getTransaction(); - } - - ... } ---- From 1b63054e7a24aaf4e9700658a396d213581aa66e Mon Sep 17 00:00:00 2001 From: Prasad Kommoju Date: Wed, 21 Jul 2021 09:58:58 -0700 Subject: [PATCH 3/5] Add missing file --- .../performance/Method-list--CPU-ncm.csv | 648 ++++++++++++++++++ 1 file changed, 648 insertions(+) create mode 100644 docs/modules/ROOT/pages/performance/Method-list--CPU-ncm.csv diff --git a/docs/modules/ROOT/pages/performance/Method-list--CPU-ncm.csv b/docs/modules/ROOT/pages/performance/Method-list--CPU-ncm.csv new file mode 100644 index 000000000..f047210e9 --- /dev/null +++ b/docs/modules/ROOT/pages/performance/Method-list--CPU-ncm.csv @@ -0,0 +1,648 @@ +"Method","Time (ms)","Own Time (ms)" +"java.lang.Thread.run() Thread.java","566130","26" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.run() EpollEventLoop.java","334252","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run() FastThreadLocalRunnable.java","334252","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run() SingleThreadEventExecutor.java","334252","0" +"io.grpc.netty.shaded.io.netty.util.internal.ThreadExecutorMap$2.run() ThreadExecutorMap.java","334252","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.epollWait() EpollEventLoop.java","332969","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.Native.epollWait(FileDescriptor, EpollEventArray, FileDescriptor, int, int) Native.java","332969","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.Native.epollWait0(int, long, int, int, int, int) Native.java (native)","332969","332969" +"java.lang.Thread.sleep(long) Thread.java (native)","202885","202885" +"org.apache.ignite.internal.client.thin.TcpClientChannel.lambda$initReceiverThread$0() TcpClientChannel.java","197902","10" +"org.apache.ignite.internal.client.thin.TcpClientChannel$$Lambda$632.run()","197902","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel.processNextMessage() TcpClientChannel.java","197892","0" +"java.lang.ref.Reference$ReferenceHandler.run() Reference.java","197880","197880" +"org.apache.catalina.core.StandardServer.await() StandardServer.java","197880","0" +"org.springframework.boot.web.embedded.tomcat.TomcatWebServer$1.run() TomcatWebServer.java","197880","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel$ByteCountingDataInput.read(byte[], int) TcpClientChannel.java","197168","10" +"java.net.SocketInputStream.read(byte[], int, int) SocketInputStream.java","197157","197157" +"org.apache.ignite.internal.client.thin.TcpClientChannel$ByteCountingDataInput.readInt() TcpClientChannel.java","171678","0" +"java.util.concurrent.ThreadPoolExecutor$Worker.run() ThreadPoolExecutor.java","33928","20" +"io.grpc.internal.ContextRunnable.run() ContextRunnable.java","33907","0" +"io.grpc.internal.SerializingExecutor.run() SerializingExecutor.java","33907","0" +"com.futurewei.alcor.netwconfigmanager.server.grpc.GoalStateProvisionerServer$GoalStateProvisionerImpl$1.onCompleted() GoalStateProvisionerServer.java","32150","0" +"io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed() ServerCallImpl.java","32150","0" +"io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext() ServerImpl.java","32150","0" +"io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onHalfClose() ServerCalls.java","32150","0" +"com.futurewei.alcor.netwconfigmanager.service.impl.GoalStatePersistenceServiceImpl.getVniInLoop(int) GoalStatePersistenceServiceImpl.java","32129","0" +"org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(Object, Method, Object[], MethodProxy) CglibAopProxy.java","27585","64" +"org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(Object, ClientOperation, Consumer, Function) TcpClientCache.java","27509","10" +"org.apache.ignite.internal.client.thin.ReliableChannel.service(ClientOperation, Consumer, Function) ReliableChannel.java","27486","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel.service(ClientOperation, Consumer, Function) TcpClientChannel.java","27486","0" +"com.futurewei.alcor.netwconfigmanager.cache.VpcResourceCache$$FastClassBySpringCGLIB$$8dfcc42a.invoke(int, Object, Object[]) ","27133","0" +"com.futurewei.alcor.netwconfigmanager.cache.VpcResourceCache$$EnhancerBySpringCGLIB$$829e3684.getResourceMeta(String) ","26855","0" +"com.futurewei.alcor.common.db.ignite.IgniteClientDbCache.get(Object) IgniteClientDbCache.java","26824","0" +"com.futurewei.alcor.netwconfigmanager.cache.VpcResourceCache.getResourceMeta(String) VpcResourceCache.java","26824","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.get(Object) TcpClientCache.java","26824","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel.receive(long, Function) TcpClientChannel.java","26821","0" +"org.apache.ignite.internal.client.thin.ClientUtils.readObject(BinaryInputStream, boolean) ClientUtils.java","26800","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.readObject(PayloadInputChannel) TcpClientCache.java","26800","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.readObject(BinaryInputStream) TcpClientCache.java","26800","0" +"org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$676.apply(Object)","26800","0" +"org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(BinaryInputStream, ClassLoader, BinaryReaderHandles) GridBinaryMarshaller.java","26800","0" +"org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(BinaryInputStream, BinaryReaderHandles) ClientBinaryMarshaller.java","26800","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize() BinaryReaderExImpl.java","26790","546" +"org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(int, Object, ClientOperation, Consumer, Function) ReliableChannel.java","26724","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0() BinaryReaderExImpl.java","26470","2476" +"org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryReaderExImpl) BinaryClassDescriptor.java","25870","149" +"org.apache.ignite.internal.binary.BinaryFieldAccessor.read(Object, BinaryReaderExImpl) BinaryFieldAccessor.java","25870","0" +"org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(Object, BinaryReaderExImpl) BinaryFieldAccessor.java","25870","10" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.readField(int) BinaryReaderExImpl.java","25870","22" +"org.apache.ignite.internal.binary.BinaryUtils.doReadMap(BinaryInputStream, BinaryContext, ClassLoader, BinaryReaderHandlesHolder, boolean, boolean, BinaryMapFactory) BinaryUtils.java","25870","331" +"org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(Object, BinaryReaderHandles) ClientUtils.java","25870","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel$ByteCountingDataInput.read(int) TcpClientChannel.java","25814","693" +"org.apache.ignite.internal.binary.BinaryUtils.deserializeOrUnmarshal(BinaryInputStream, BinaryContext, ClassLoader, BinaryReaderHandlesHolder, boolean, boolean) BinaryUtils.java","25310","0" +"org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryInputStream, BinaryContext, ClassLoader, BinaryReaderHandlesHolder) BinaryUtils.java","25310","32" +"org.apache.ignite.internal.binary.BinaryUtils.doReadCollection(BinaryInputStream, BinaryContext, ClassLoader, BinaryReaderHandlesHolder, boolean, boolean, BinaryCollectionFactory) BinaryUtils.java","14337","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.setHandle(Object, int) BinaryReaderExImpl.java","11356","0" +"org.apache.ignite.internal.binary.BinaryReaderHandles.put(int, Object) BinaryReaderHandles.java","11356","2657" +"java.util.HashMap.put(Object, Object) HashMap.java","10515","10515" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.(BinaryContext, BinaryInputStream, ClassLoader, BinaryReaderHandles, boolean) BinaryReaderExImpl.java","5623","4948" +"java.util.HashSet.add(Object) HashSet.java","1942","1942" +"java.lang.reflect.Field.set(Object, Object) Field.java","1747","1747" +"io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(StreamListener$MessageProducer) ServerCallImpl.java","1734","0" +"io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailableInternal(StreamListener$MessageProducer) ServerCallImpl.java","1734","0" +"io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext() ServerImpl.java","1734","0" +"java.lang.ClassLoader.loadClass(String) ClassLoader.java","1528","1745" +"com.futurewei.alcor.netwconfigmanager.server.grpc.GoalStateProvisionerServer$GoalStateProvisionerImpl$1.onNext(Object) GoalStateProvisionerServer.java","1475","0" +"com.futurewei.alcor.netwconfigmanager.server.grpc.GoalStateProvisionerServer$GoalStateProvisionerImpl$1.onNext(Goalstate$GoalStateV2) GoalStateProvisionerServer.java","1475","0" +"io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(Object) ServerCalls.java","1475","0" +"java.util.concurrent.ConcurrentHashMap.get(Object) ConcurrentHashMap.java","1169","1169" +"com.futurewei.alcor.netwconfigmanager.service.impl.GoalStatePersistenceServiceImpl.updateGoalState(String, HostGoalState) GoalStatePersistenceServiceImpl.java","1145","0" +"org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(boolean, int, ClassLoader, boolean) BinaryContext.java","1134","0" +"org.apache.ignite.internal.client.thin.TcpIgniteClient$ClientMarshallerContext.getClass(int, ClassLoader) TcpIgniteClient.java","1069","0" +"org.apache.ignite.internal.util.IgniteUtils.forName(String, ClassLoader, IgnitePredicate) IgniteUtils.java","1069","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(long) SingleThreadEventExecutor.java","939","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.setHandle(Object) BinaryReaderExImpl.java","932","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.AbstractEventExecutor.safeExecute(Runnable) AbstractEventExecutor.java","918","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServer$1.initChannel(Channel) NettyServer.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AbstractUnsafe.register0(ChannelPromise) AbstractChannel.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AbstractUnsafe$1.run() AbstractChannel.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded() AbstractChannelHandlerContext.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelInitializer.handlerAdded(ChannelHandlerContext) ChannelInitializer.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelInitializer.initChannel(ChannelHandlerContext) ChannelInitializer.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(AbstractChannelHandlerContext) DefaultChannelPipeline.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers() DefaultChannelPipeline.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded() DefaultChannelPipeline.java","851","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute() DefaultChannelPipeline.java","851","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerTransport.start(ServerTransportListener) NettyServerTransport.java","730","0" +"com.futurewei.alcor.netwconfigmanager.service.impl.GoalStatePersistenceServiceImpl.populateVpcResourceCache(HostGoalState, Map) GoalStatePersistenceServiceImpl.java","701","0" +"com.futurewei.alcor.common.db.ignite.IgniteClientDbCache.put(Object, Object) IgniteClientDbCache.java","684","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.put(Object, Object) TcpClientCache.java","684","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.(BinaryContext, BinaryInputStream, ClassLoader, BinaryReaderHandles, boolean, boolean) BinaryReaderExImpl.java","674","652" +"org.apache.ignite.internal.client.thin.TcpClientChannel.send(ClientOperation, Consumer) TcpClientChannel.java","665","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerTransport.createHandler(ServerTransportListener, ChannelPromise) NettyServerTransport.java","616","0" +"org.apache.ignite.internal.binary.BinaryUtils.doReadBinaryObject(BinaryInputStream, BinaryContext, boolean) BinaryUtils.java","599","10" +"org.apache.ignite.internal.binary.BinaryUtils.doReadByteArray(BinaryInputStream) BinaryUtils.java","588","0" +"org.apache.ignite.internal.binary.streams.BinaryAbstractInputStream.readByteArray(int) BinaryAbstractInputStream.java","588","588" +"org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryReaderExImpl) BinaryFieldAccessor.java","568","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.readString(int) BinaryReaderExImpl.java","568","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.readString() BinaryReaderExImpl.java","568","556" +"com.futurewei.alcor.common.logging.Logger.log(Level, String) Logger.java","524","0" +"java.util.logging.Logger.log(Level, String) Logger.java","524","514" +"io.jaegertracing.internal.reporters.RemoteReporter.flush() RemoteReporter.java","425","10" +"io.jaegertracing.internal.reporters.RemoteReporter$1.run() RemoteReporter.java","425","0" +"java.util.TimerThread.run() Timer.java","425","0" +"java.util.concurrent.ArrayBlockingQueue.offer(Object) ArrayBlockingQueue.java","415","415" +"com.futurewei.alcor.netwconfigmanager.cache.ResourceStateCache$$EnhancerBySpringCGLIB$$ee189f20.addResourceState(String, Object) ","365","0" +"com.futurewei.alcor.netwconfigmanager.cache.ResourceStateCache.addResourceState(String, Object) ResourceStateCache.java","354","0" +"com.futurewei.alcor.netwconfigmanager.cache.ResourceStateCache$$FastClassBySpringCGLIB$$d3c76de.invoke(int, Object, Object[]) ","354","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventArray, int) EpollEventLoop.java","344","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.newHandler(ServerTransportListener, ChannelPromise, List, TransportTracer, int, int, int, int, long, long, long, long, long, boolean, long) NettyServerHandler.java","342","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel$ByteCountingDataInput.readLong() TcpClientChannel.java","327","0" +"java.net.SocketOutputStream.write(byte[], int, int) SocketOutputStream.java","324","324" +"org.apache.ignite.internal.client.thin.TcpClientChannel.write(byte[], int) TcpClientChannel.java","324","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.lambda$cacheSingleKeyOperation$26(Object, Consumer, PayloadOutputChannel) TcpClientCache.java","318","0" +"org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$677.accept(Object)","318","0" +"org.apache.ignite.internal.client.thin.ClientUtils.writeObject(BinaryOutputStream, Object) ClientUtils.java","318","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.writeObject(PayloadOutputChannel, Object) TcpClientCache.java","318","0" +"com.google.protobuf.AbstractMessage.toString() AbstractMessage.java","318","0" +"com.futurewei.alcor.netwconfigmanager.cache.VpcResourceCache.addResourceMeta(VpcResourceMeta) VpcResourceCache.java","308","0" +"com.futurewei.alcor.netwconfigmanager.cache.VpcResourceCache$$EnhancerBySpringCGLIB$$829e3684.addResourceMeta(VpcResourceMeta) ","308","0" +"org.apache.ignite.internal.client.thin.TcpClientCache.lambda$put$0(Object, PayloadOutputChannel) TcpClientCache.java","308","0" +"org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$678.accept(Object)","308","0" +"org.apache.ignite.internal.binary.GridBinaryMarshaller.marshal(Object, boolean) GridBinaryMarshaller.java","306","0" +"org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.marshal(Object) ClientBinaryMarshaller.java","306","0" +"com.google.protobuf.TextFormat.print(MessageOrBuilder, Appendable) TextFormat.java","306","0" +"com.google.protobuf.TextFormat.printToString(MessageOrBuilder) TextFormat.java","306","0" +"com.google.protobuf.TextFormat$Printer.print(MessageOrBuilder, TextFormat$TextGenerator) TextFormat.java","306","10" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(Object, boolean) BinaryWriterExImpl.java","296","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(Object) BinaryWriterExImpl.java","296","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(Object, boolean) BinaryWriterExImpl.java","296","0" +"com.google.protobuf.GeneratedMessageV3.getAllFields() GeneratedMessageV3.java","262","0" +"com.google.protobuf.GeneratedMessageV3.getAllFieldsMutable(boolean) GeneratedMessageV3.java","262","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) Goalstate.java","258","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) Goalstate.java","258","0" +"com.google.protobuf.AbstractParser.parseFrom(CodedInputStream, ExtensionRegistryLite) AbstractParser.java","258","0" +"com.google.protobuf.AbstractParser.parseFrom(CodedInputStream, ExtensionRegistryLite) AbstractParser.java","258","0" +"io.grpc.MethodDescriptor.parseRequest(InputStream) MethodDescriptor.java","258","0" +"io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(InputStream) ProtoLiteUtils.java","258","0" +"io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(InputStream) ProtoLiteUtils.java","258","0" +"io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parseFrom(CodedInputStream) ProtoLiteUtils.java","258","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2.(CodedInputStream, ExtensionRegistryLite) Goalstate.java","247","0" +"com.google.protobuf.TextFormat$Printer.printField(Descriptors$FieldDescriptor, Object, TextFormat$TextGenerator) TextFormat.java","245","0" +"com.google.protobuf.TextFormat$Printer.printFieldValue(Descriptors$FieldDescriptor, Object, TextFormat$TextGenerator) TextFormat.java","245","0" +"com.google.protobuf.TextFormat$Printer.printSingleField(Descriptors$FieldDescriptor, Object, TextFormat$TextGenerator) TextFormat.java","245","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext, Object) AbstractChannelHandlerContext.java","228","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(Object) DefaultChannelPipeline.java","228","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(Object) AbstractChannelHandlerContext.java","217","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Object) AbstractChannelHandlerContext.java","217","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(ChannelHandlerContext, Object) DefaultChannelPipeline.java","217","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady() AbstractEpollStreamChannel.java","205","0" +"io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ChannelHandlerContext, Object) ByteToMessageDecoder.java","205","0" +"org.apache.ignite.internal.binary.BinaryClassDescriptor.write(Object, BinaryWriterExImpl) BinaryClassDescriptor.java","200","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable.ensureFieldAccessorsInitialized(Class, Class) GeneratedMessageV3.java","191","12" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2$HostResourcesDefaultEntryHolder.() Goalstate.java","190","0" +"org.apache.ignite.internal.binary.BinaryFieldAccessor.write(Object, BinaryWriterExImpl) BinaryFieldAccessor.java","190","22" +"org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.write0(Object, BinaryWriterExImpl) BinaryFieldAccessor.java","190","0" +"com.futurewei.alcor.netwconfigmanager.service.impl.GoalStatePersistenceServiceImpl.processPortStates(HostGoalState) GoalStatePersistenceServiceImpl.java","186","0" +"io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ChannelHandlerContext, ByteBuf, List) ByteToMessageDecoder.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ChannelHandlerContext, ByteBuf, List) ByteToMessageDecoder.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(ChannelHandlerContext, ByteBuf, List) DefaultHttp2ConnectionDecoder.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(ChannelHandlerContext, ByteBuf, Http2FrameListener) DefaultHttp2FrameReader.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(ChannelHandlerContext, ByteBuf, Http2FrameListener) DefaultHttp2FrameReader.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.decode(ChannelHandlerContext, ByteBuf, List) Http2ConnectionHandler.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(ChannelHandlerContext, ByteBuf, List) Http2ConnectionHandler.java","183","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(ChannelHandlerContext, ByteBuf, Http2FrameListener) Http2InboundFrameLogger.java","183","0" +"com.futurewei.alcor.schema.Goalstate.() Goalstate.java","178","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.() Http2ConnectionHandler.java","170","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteMap(Map) BinaryWriterExImpl.java","169","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.writeMapField(Map) BinaryWriterExImpl.java","169","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(Object) BinaryWriterExImpl.java","169","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(ChannelHandlerContext, ByteBuf, int, Http2FrameListener) DefaultHttp2FrameReader.java","160","0" +"com.futurewei.alcor.netwconfigmanager.service.impl.GoalStatePersistenceServiceImpl.processNeighborStates(HostGoalState) GoalStatePersistenceServiceImpl.java","155","0" +"java.lang.Class.getMethod(String, Class[]) Class.java","155","155" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader$1.processFragment(boolean, ByteBuf, int, Http2FrameListener) DefaultHttp2FrameReader.java","150","0" +"com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(String[], Descriptors$FileDescriptor[], Descriptors$FileDescriptor$InternalDescriptorAssigner) Descriptors.java","145","0" +"com.google.protobuf.GeneratedMessageV3.getMethodOrDie(Class, String, Class[]) GeneratedMessageV3.java","145","0" +"java.lang.reflect.Method.invoke(Object, Object[]) Method.java","140","45" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(ChannelHandlerContext, int, Http2Headers, int, short, boolean, int, boolean) DefaultHttp2ConnectionDecoder.java","139","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onHeadersRead(ChannelHandlerContext, int, Http2Headers, int, short, boolean, int, boolean) Http2InboundFrameLogger.java","139","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.newHandler(ChannelPromise, Http2FrameReader, Http2FrameWriter, ServerTransportListener, List, TransportTracer, int, int, int, int, long, long, long, long, long, boolean, long) NettyServerHandler.java","138","24" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollServerChannel$EpollServerSocketUnsafe.epollInReady() AbstractEpollServerChannel.java","138","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.onHeadersRead(ChannelHandlerContext, int, Http2Headers) NettyServerHandler.java","127","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler$FrameListener.onHeadersRead(ChannelHandlerContext, int, Http2Headers, int, short, boolean, int, boolean) NettyServerHandler.java","127","0" +"io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$1$1PlaintextHandler.handlerAdded(ChannelHandlerContext) ProtocolNegotiators.java","113","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.addLast(EventExecutorGroup, ChannelHandler[]) DefaultChannelPipeline.java","113","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.addLast(ChannelHandler[]) DefaultChannelPipeline.java","113","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.addLast(EventExecutorGroup, String, ChannelHandler) DefaultChannelPipeline.java","113","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.replace(AbstractChannelHandlerContext, String, ChannelHandler) DefaultChannelPipeline.java","113","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.replace(ChannelHandler, String, ChannelHandler) DefaultChannelPipeline.java","113","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$SingularFieldAccessor.(Descriptors$FieldDescriptor, String, Class, Class, String) GeneratedMessageV3.java","110","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.handlerAdded(ChannelHandlerContext) NettyServerHandler.java","102","0" +"com.futurewei.alcor.schema.Common.() Common.java","101","0" +"com.google.protobuf.AbstractMessageLite.toByteArray() AbstractMessageLite.java","95","0" +"com.google.protobuf.GeneratedMessageLite$SerializedForm.(MessageLite) GeneratedMessageLite.java","95","0" +"com.google.protobuf.GeneratedMessageV3.writeReplace() GeneratedMessageV3.java","95","0" +"org.apache.ignite.internal.binary.BinaryClassDescriptor.writeReplace(Object) BinaryClassDescriptor.java","95","0" +"org.apache.ignite.internal.binary.BinaryMethodWriteReplacer.replace(Object) BinaryMethodWriteReplacer.java","95","0" +"com.google.protobuf.AbstractParser.parseFrom(byte[], ExtensionRegistryLite) AbstractParser.java","90","0" +"com.google.protobuf.AbstractParser.parseFrom(byte[]) AbstractParser.java","90","0" +"com.google.protobuf.AbstractParser.parseFrom(byte[], int, int, ExtensionRegistryLite) AbstractParser.java","90","0" +"com.google.protobuf.AbstractParser.parseFrom(byte[]) AbstractParser.java","90","0" +"com.google.protobuf.AbstractParser.parsePartialFrom(byte[], int, int, ExtensionRegistryLite) AbstractParser.java","90","0" +"com.google.protobuf.DescriptorProtos$FileDescriptorProto.(CodedInputStream, ExtensionRegistryLite, DescriptorProtos$1) DescriptorProtos.java","90","0" +"com.google.protobuf.DescriptorProtos$FileDescriptorProto.(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","90","0" +"com.google.protobuf.DescriptorProtos$FileDescriptorProto.parseFrom(byte[]) DescriptorProtos.java","90","0" +"com.google.protobuf.DescriptorProtos$FileDescriptorProto$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","90","0" +"com.google.protobuf.DescriptorProtos$FileDescriptorProto$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","90","0" +"com.futurewei.alcor.netwconfigmanager.entity.VpcResourceMeta.getResourceMeta(String) VpcResourceMeta.java","89","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.newEpollHandle(RecvByteBufAllocator$ExtendedHandle) AbstractEpollChannel.java","79","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.recvBufAllocHandle() AbstractEpollChannel.java","79","0" +"com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(Parser, ExtensionRegistryLite) CodedInputStream.java","79","0" +"io.grpc.netty.shaded.io.grpc.netty.AbstractNettyHandler.handlerAdded(ChannelHandlerContext) AbstractNettyHandler.java","78","0" +"com.google.protobuf.CodedOutputStream.computeMessageSize(int, MessageLite) CodedOutputStream.java","74","0" +"com.google.protobuf.CodedOutputStream.computeMessageSizeNoTag(MessageLite) CodedOutputStream.java","74","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.directBuffer(int, int) AbstractByteBufAllocator.java","70","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.directBuffer(int) AbstractByteBufAllocator.java","70","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DecoratingHttp2FrameWriter.writeSettings(ChannelHandlerContext, Http2Settings, ChannelPromise) DecoratingHttp2FrameWriter.java","68","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.writeSettings(ChannelHandlerContext, Http2Settings, ChannelPromise) DefaultHttp2ConnectionEncoder.java","68","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.handlerAdded(ChannelHandlerContext) Http2ConnectionHandler.java","68","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.(Http2ConnectionHandler, ChannelHandlerContext) Http2ConnectionHandler.java","68","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.sendPreface(ChannelHandlerContext) Http2ConnectionHandler.java","68","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2OutboundFrameLogger.writeSettings(ChannelHandlerContext, Http2Settings, ChannelPromise) Http2OutboundFrameLogger.java","68","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteCollection(Collection) BinaryWriterExImpl.java","67","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.writeCollectionField(Collection) BinaryWriterExImpl.java","67","0" +"java.lang.invoke.MethodHandleNatives.linkCallSite(Object, int, Object, Object, Object, Object, Object[]) MethodHandleNatives.java","65","65" +"io.grpc.netty.shaded.io.grpc.netty.GrpcHttp2HeadersUtils$GrpcHttp2ServerHeadersDecoder.(long) GrpcHttp2HeadersUtils.java","62","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersDecoder.(boolean, long, int) DefaultHttp2HeadersDecoder.java","62","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersDecoder.(boolean, long) DefaultHttp2HeadersDecoder.java","62","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameWriter.() DefaultHttp2FrameWriter.java","61","0" +"com.google.protobuf.GeneratedMessageV3.getField(Descriptors$FieldDescriptor) GeneratedMessageV3.java","58","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerTransport.() NettyServerTransport.java","57","10" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.buffer(int) AbstractByteBufAllocator.java","57","0" +"io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(int, int) PooledByteBufAllocator.java","57","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameWriter.writeSettings(ChannelHandlerContext, Http2Settings, ChannelPromise) DefaultHttp2FrameWriter.java","57","0" +"com.futurewei.alcor.schema.Gateway.() Gateway.java","55","0" +"com.futurewei.alcor.schema.Vpc.() Vpc.java","55","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$SingularEnumFieldAccessor.(Descriptors$FieldDescriptor, String, Class, Class, String) GeneratedMessageV3.java","52","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersEncoder.() DefaultHttp2HeadersEncoder.java","50","0" +"io.grpc.netty.shaded.io.netty.buffer.Unpooled.wrappedBuffer(byte[]) Unpooled.java","50","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2.internalGetFieldAccessorTable() Goalstate.java","48","0" +"java.util.IdentityHashMap.put(Object, Object) IdentityHashMap.java","48","48" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.tryWriteAsHandle(Object) BinaryWriterExImpl.java","48","0" +"org.apache.ignite.internal.binary.BinaryWriterHandles.put(Object, int) BinaryWriterHandles.java","48","0" +"com.google.protobuf.MapEntry.(MapEntry$Metadata, CodedInputStream, ExtensionRegistryLite) MapEntry.java","46","12" +"com.google.protobuf.MapEntry.(MapEntry$Metadata, CodedInputStream, ExtensionRegistryLite, MapEntry$1) MapEntry.java","46","0" +"com.google.protobuf.MapEntry$Metadata$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) MapEntry.java","46","0" +"com.google.protobuf.MapEntry$Metadata$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) MapEntry.java","46","0" +"com.google.protobuf.GeneratedMessageV3.invokeOrDie(Method, Object, Object[]) GeneratedMessageV3.java","45","0" +"io.grpc.internal.StatsTraceContext.newServerContext(List, String, Metadata) StatsTraceContext.java","45","0" +"com.google.protobuf.Descriptors$FileDescriptor.buildFrom(DescriptorProtos$FileDescriptorProto, Descriptors$FileDescriptor[], boolean) Descriptors.java","43","0" +"com.futurewei.alcor.schema.Port$PortConfiguration.getSerializedSize() Port.java","41","0" +"com.futurewei.alcor.schema.Port$PortState.getSerializedSize() Port.java","41","0" +"org.apache.ignite.internal.client.thin.TcpClientChannel$ByteCountingDataInput.readShort() TcpClientChannel.java","41","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolArena.allocate(PoolThreadCache, int, int) PoolArena.java","35","0" +"com.futurewei.alcor.netwconfigmanager.cache.HostResourceMetadataCache$$EnhancerBySpringCGLIB$$521f3dc0.getTransaction() ","34","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Headers$PseudoHeaderName.() Http2Headers.java","34","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.ReadOnlyHttp2Headers.serverHeaders(boolean, AsciiString, AsciiString[]) ReadOnlyHttp2Headers.java","34","0" +"java.lang.invoke.LambdaForm$MH.182988318.linkToTargetMethod(Object, int, long, Object) LambdaForm$MH","34","34" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollRecvByteAllocatorHandle.(RecvByteBufAllocator$ExtendedHandle) EpollRecvByteAllocatorHandle.java","34","0" +"io.grpc.internal.AbstractStream$TransportState.requestMessagesFromDeframer(int) AbstractStream.java","33","0" +"io.grpc.internal.MessageDeframer.deliver() MessageDeframer.java","33","0" +"io.grpc.internal.MessageDeframer.request(int) MessageDeframer.java","33","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerStream$Sink$1.run() NettyServerStream.java","33","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$SingularFieldAccessor.get(GeneratedMessageV3) GeneratedMessageV3.java","33","0" +"io.grpc.internal.CensusStatsModule$ServerTracerFactory.newServerStreamTracer(String, Metadata) CensusStatsModule.java","33","0" +"com.futurewei.alcor.netwconfigmanager.service.impl.GoalStatePersistenceServiceImpl.processVpcStates(HostGoalState) GoalStatePersistenceServiceImpl.java","32","0" +"com.futurewei.alcor.netwconfigmanager.cache.HostResourceMetadataCache$$FastClassBySpringCGLIB$$fc3227be.invoke(int, Object, Object[]) ","32","0" +"java.lang.Integer.valueOf(int) Integer.java","32","32" +"java.lang.String.getBytes(Charset) String.java","32","32" +"io.grpc.netty.shaded.io.grpc.netty.WriteQueue.flush() WriteQueue.java","32","0" +"io.grpc.netty.shaded.io.grpc.netty.WriteQueue$1.run() WriteQueue.java","32","0" +"java.util.concurrent.locks.LockSupport.unpark(Thread) LockSupport.java","30","30" +"org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable, boolean) GridFutureAdapter.java","30","0" +"org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable) GridFutureAdapter.java","30","0" +"org.apache.ignite.internal.util.future.GridFutureAdapter.unblock(Object) GridFutureAdapter.java","30","0" +"org.apache.ignite.internal.util.future.GridFutureAdapter.unblockAll(GridFutureAdapter$Node) GridFutureAdapter.java","30","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersDecoder.(boolean, HpackDecoder) DefaultHttp2HeadersDecoder.java","29","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2CodecUtil.() Http2CodecUtil.java","29","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2HeadersEncoder.() Http2HeadersEncoder.java","26","0" +"jdk.internal.misc.InnocuousThread.run() InnocuousThread.java","26","26" +"com.futurewei.alcor.schema.Port$PortConfiguration.internalGetFieldAccessorTable() Port.java","25","0" +"io.grpc.internal.AbstractServerStream$TransportState.(int, StatsTraceContext, TransportTracer) AbstractServerStream.java","24","0" +"io.grpc.internal.AbstractStream$TransportState.(int, StatsTraceContext, TransportTracer) AbstractStream.java","24","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerStream$TransportState.(NettyServerHandler, EventLoop, Http2Stream, int, StatsTraceContext, TransportTracer, String) NettyServerStream.java","24","0" +"com.futurewei.alcor.schema.Goalstate$ResourceIdType.internalGetFieldAccessorTable() Goalstate.java","24","0" +"com.futurewei.alcor.schema.Subnet$SubnetState.internalGetFieldAccessorTable() Subnet.java","24","0" +"io.grpc.internal.ServerImpl$ServerListenerImpl.transportCreated(ServerTransport) ServerImpl.java","24","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolArena.allocate(PoolThreadCache, PooledByteBuf, int) PoolArena.java","24","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolArena.allocateNormal(PooledByteBuf, int, int) PoolArena.java","24","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolArena$DirectArena.newChunk(int, int, int, int) PoolArena.java","24","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel.(Channel, LinuxSocket, SocketAddress) AbstractEpollStreamChannel.java","24","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollServerSocketChannel.newChildChannel(int, byte[], int, int) EpollServerSocketChannel.java","24","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollSocketChannel.(Channel, LinuxSocket, InetSocketAddress) EpollSocketChannel.java","24","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersEncoder.(Http2HeadersEncoder$SensitivityDetector) DefaultHttp2HeadersEncoder.java","24","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.WeightedFairQueueByteDistributor.(Http2Connection, int) WeightedFairQueueByteDistributor.java","24","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.WeightedFairQueueByteDistributor.(Http2Connection) WeightedFairQueueByteDistributor.java","24","0" +"java.lang.ThreadLocal.get() ThreadLocal.java","24","24" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBuf.() AbstractByteBuf.java","23","10" +"io.grpc.netty.shaded.io.netty.buffer.Unpooled.() Unpooled.java","22","0" +"com.google.protobuf.DescriptorProtos$DescriptorProto.(CodedInputStream, ExtensionRegistryLite, DescriptorProtos$1) DescriptorProtos.java","22","0" +"com.google.protobuf.DescriptorProtos$DescriptorProto.(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","22","0" +"com.google.protobuf.DescriptorProtos$DescriptorProto$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","22","0" +"com.google.protobuf.DescriptorProtos$DescriptorProto$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","22","0" +"io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.initialValue() PooledByteBufAllocator.java","22","0" +"io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.initialValue() PooledByteBufAllocator.java","22","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolThreadCache.(PoolArena, PoolArena, int, int, int, int, int) PoolThreadCache.java","22","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocal.get() FastThreadLocal.java","22","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocal.initialize(InternalThreadLocalMap) FastThreadLocal.java","22","0" +"com.futurewei.alcor.schema.Neighbor$NeighborState.internalGetFieldAccessorTable() Neighbor.java","22","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$SingularMessageFieldAccessor.(Descriptors$FieldDescriptor, String, Class, Class, String) GeneratedMessageV3.java","22","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractReferenceCountedByteBuf.handleRelease(boolean) AbstractReferenceCountedByteBuf.java","22","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractReferenceCountedByteBuf.release() AbstractReferenceCountedByteBuf.java","22","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolArena.free(PoolChunk, ByteBuffer, long, int, PoolThreadCache) PoolArena.java","22","12" +"io.grpc.netty.shaded.io.netty.buffer.PooledByteBuf.deallocate() PooledByteBuf.java","22","0" +"io.grpc.internal.ServerImpl$ServerTransportListenerImpl.streamCreated(ServerStream, String, Metadata) ServerImpl.java","22","0" +"io.grpc.internal.ServerImpl$ServerTransportListenerImpl.streamCreatedInternal(ServerStream, String, Metadata, Tag) ServerImpl.java","22","0" +"io.grpc.internal.ServerImpl$ServerTransportListenerImpl.startCall(ServerStream, String, ServerMethodDefinition, Metadata, Context$CancellableContext, StatsTraceContext, Tag) ServerImpl.java","22","0" +"io.grpc.internal.ServerImpl$ServerTransportListenerImpl.startWrappedCall(String, ServerMethodDefinition, ServerStream, Metadata, Context$CancellableContext, Tag) ServerImpl.java","22","0" +"io.grpc.internal.ServerImpl$ServerTransportListenerImpl$1StreamCreated.runInContext() ServerImpl.java","22","0" +"io.grpc.internal.ServerImpl$ServerTransportListenerImpl$1StreamCreated.runInternal() ServerImpl.java","22","0" +"com.futurewei.alcor.schema.Vpc$VpcState.getSerializedSize() Vpc.java","22","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteString(String) BinaryWriterExImpl.java","22","0" +"org.apache.ignite.internal.binary.streams.BinaryAbstractOutputStream.writeByteArray(byte[]) BinaryAbstractOutputStream.java","22","10" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection.(boolean) DefaultHttp2Connection.java","22","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection.(boolean, int) DefaultHttp2Connection.java","22","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.sendResponseHeaders(ChannelHandlerContext, SendResponseHeadersCommand, ChannelPromise) NettyServerHandler.java","22","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.write(ChannelHandlerContext, Object, ChannelPromise) NettyServerHandler.java","22","0" +"io.grpc.netty.shaded.io.grpc.netty.WriteQueue$AbstractQueuedCommand.run(Channel) WriteQueue.java","22","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel.write(Object, ChannelPromise) AbstractChannel.java","22","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeWrite(Object, ChannelPromise) AbstractChannelHandlerContext.java","22","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(Object, ChannelPromise) AbstractChannelHandlerContext.java","22","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.write(Object, boolean, ChannelPromise) AbstractChannelHandlerContext.java","22","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.write(Object, ChannelPromise) AbstractChannelHandlerContext.java","22","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.write(Object, ChannelPromise) DefaultChannelPipeline.java","22","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DecoratingHttp2FrameWriter.writeHeaders(ChannelHandlerContext, int, Http2Headers, int, boolean, ChannelPromise) DecoratingHttp2FrameWriter.java","22","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.writeHeaders(ChannelHandlerContext, int, Http2Headers, int, boolean, ChannelPromise) DefaultHttp2ConnectionEncoder.java","22","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.writeHeaders(ChannelHandlerContext, int, Http2Headers, int, short, boolean, int, boolean, ChannelPromise) DefaultHttp2ConnectionEncoder.java","22","0" +"com.google.protobuf.Descriptors$FileDescriptor.(DescriptorProtos$FileDescriptorProto, Descriptors$FileDescriptor[], Descriptors$DescriptorPool, boolean) Descriptors.java","22","12" +"org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.mode(Object) BinaryFieldAccessor.java","22","22" +"org.apache.ignite.internal.binary.streams.BinaryHeapOutputStream.(int, BinaryMemoryAllocatorChunk) BinaryHeapOutputStream.java","22","22" +"java.lang.reflect.Field.get(Object) Field.java","22","22" +"org.apache.ignite.internal.binary.BinaryUtils.doReadString(BinaryInputStream) BinaryUtils.java","22","12" +"com.google.protobuf.MapEntryLite.parseEntry(CodedInputStream, MapEntryLite$Metadata, ExtensionRegistryLite) MapEntryLite.java","22","0" +"com.google.protobuf.MapEntryLite.parseField(CodedInputStream, ExtensionRegistryLite, WireFormat$FieldType, Object) MapEntryLite.java","22","0" +"com.yourkit.probes.builtin.Databases$Connection_or_Statement_close_Probe.onEnter(Object) a","21","21" +"java.util.LinkedHashMap.get(Object) LinkedHashMap.java","21","21" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AbstractUnsafe.flush() AbstractChannel.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AbstractUnsafe.flush0() AbstractChannel.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.flush() AbstractChannelHandlerContext.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeFlush() AbstractChannelHandlerContext.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeFlush0() AbstractChannelHandlerContext.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelOutboundBuffer.remove() ChannelOutboundBuffer.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelOutboundBuffer.removeBytes(long) ChannelOutboundBuffer.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.flush(ChannelHandlerContext) DefaultChannelPipeline.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0() AbstractEpollChannel.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(ChannelOutboundBuffer) AbstractEpollStreamChannel.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(ChannelOutboundBuffer) AbstractEpollStreamChannel.java","21","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(ChannelOutboundBuffer, IovArray) AbstractEpollStreamChannel.java","21","0" +"io.grpc.stub.ServerCalls$ServerCallStreamObserverImpl.onCompleted() ServerCalls.java","20","10" +"com.futurewei.alcor.netwconfigmanager.cache.HostResourceMetadataCache.addResourceMeta(ResourceMeta) HostResourceMetadataCache.java","20","0" +"com.futurewei.alcor.netwconfigmanager.cache.HostResourceMetadataCache$$EnhancerBySpringCGLIB$$521f3dc0.addResourceMeta(ResourceMeta) ","20","0" +"com.google.protobuf.ByteString.copyFromUtf8(String) ByteString.java","20","0" +"org.apache.ignite.internal.util.IgniteUtils.newHashSet(int) IgniteUtils.java","20","10" +"com.futurewei.alcor.schema.Neighbor$NeighborConfiguration.getSerializedSize() Neighbor.java","20","10" +"com.futurewei.alcor.schema.Neighbor$NeighborState.getSerializedSize() Neighbor.java","20","0" +"org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() TaskThread.java","20","0" +"io.jaegertracing.internal.reporters.RemoteReporter$QueueProcessor.run() RemoteReporter.java","20","0" +"java.util.concurrent.ConcurrentHashMap.remove(Object) ConcurrentHashMap.java","20","20" +"com.futurewei.alcor.schema.Port$PortState.internalGetFieldAccessorTable() Port.java","16","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBuf.writeBytes(byte[], int, int) AbstractByteBuf.java","16","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBuf.writeBytes(byte[]) AbstractByteBuf.java","16","0" +"io.grpc.netty.shaded.io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(int, byte[], int, int) UnpooledUnsafeDirectByteBuf.java","16","0" +"io.grpc.netty.shaded.io.netty.buffer.Unpooled.directBuffer(int) Unpooled.java","13","0" +"io.grpc.netty.shaded.io.netty.buffer.UnpooledByteBufAllocator.newDirectBuffer(int, int) UnpooledByteBufAllocator.java","13","13" +"io.grpc.netty.shaded.io.netty.util.ResourceLeakDetectorFactory.() ResourceLeakDetectorFactory.java","12","0" +"io.grpc.netty.shaded.io.netty.util.ResourceLeakDetectorFactory$DefaultResourceLeakDetectorFactory.() ResourceLeakDetectorFactory.java","12","0" +"io.grpc.netty.shaded.io.netty.util.ResourceLeakDetectorFactory$DefaultResourceLeakDetectorFactory$1.(ResourceLeakDetectorFactory$DefaultResourceLeakDetectorFactory) ResourceLeakDetectorFactory.java","12","12" +"com.futurewei.alcor.common.db.ignite.IgniteClientTransaction.start() IgniteClientTransaction.java","12","0" +"com.futurewei.alcor.common.utils.CommonUtil.() CommonUtil.java","12","0" +"com.futurewei.alcor.netwconfigmanager.cache.HostResourceMetadataCache.getTransaction() HostResourceMetadataCache.java","12","0" +"com.futurewei.alcor.netwconfigmanager.entity.ResourceMeta.addPortId(String) ResourceMeta.java","12","0" +"com.futurewei.alcor.netwconfigmanager.util.NetworkConfigManagerUtil.splitClusterToHostGoalState(Goalstate$GoalStateV2) NetworkConfigManagerUtil.java","12","0" +"com.futurewei.alcor.netwconfigmanager.util.NetworkConfigManagerUtil$1.() NetworkConfigManagerUtil.java","12","0" +"com.futurewei.alcor.schema.Common$ResourceType.() Common.java","12","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2.internalGetMapField(int) Goalstate.java","12","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2.internalGetSecurityGroupStates() Goalstate.java","12","0" +"com.futurewei.alcor.schema.Goalstate$GoalStateV2$SecurityGroupStatesDefaultEntryHolder.() Goalstate.java","12","0" +"com.futurewei.alcor.schema.Goalstate$HostResources.toBuilder() Goalstate.java","12","0" +"com.futurewei.alcor.schema.Goalstate$HostResources.toBuilder() Goalstate.java","12","0" +"com.futurewei.alcor.schema.Neighbor$NeighborConfiguration.internalGetFieldAccessorTable() Neighbor.java","12","0" +"com.futurewei.alcor.schema.SecurityGroup$SecurityGroupState.() SecurityGroup.java","12","0" +"com.futurewei.alcor.schema.Vpc$VpcConfiguration.getSerializedSize() Vpc.java","12","0" +"com.futurewei.alcor.schema.Vpc$VpcState.internalGetFieldAccessorTable() Vpc.java","12","0" +"com.google.common.base.Stopwatch.() Stopwatch.java","12","0" +"com.google.common.base.Stopwatch.createUnstarted() Stopwatch.java","12","0" +"com.google.common.collect.Lists.computeArrayListCapacity(int) Lists.java","12","0" +"com.google.common.collect.Lists.newArrayList(Object[]) Lists.java","12","0" +"com.google.protobuf.DescriptorProtos$FileOptions.() DescriptorProtos.java","12","0" +"com.google.protobuf.DescriptorProtos$FileOptions.() DescriptorProtos.java","12","0" +"com.google.protobuf.GeneratedMessageV3$ExtendableMessage.() GeneratedMessageV3.java","12","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$MapFieldAccessor.(Descriptors$FieldDescriptor, String, Class, Class) GeneratedMessageV3.java","12","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$MapFieldAccessor.get(GeneratedMessageV3) GeneratedMessageV3.java","12","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$MapFieldAccessor.getMapField(GeneratedMessageV3) GeneratedMessageV3.java","12","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$MapFieldAccessor.getRepeatedCount(GeneratedMessageV3) GeneratedMessageV3.java","12","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$RepeatedFieldAccessor.get(GeneratedMessageV3) GeneratedMessageV3.java","12","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$RepeatedMessageFieldAccessor.(Descriptors$FieldDescriptor, String, Class, Class) GeneratedMessageV3.java","12","0" +"com.google.protobuf.MapEntry.newBuilderForType() MapEntry.java","12","0" +"com.google.protobuf.MapField.convertKeyAndValueToMessage(Object, Object) MapField.java","12","0" +"com.google.protobuf.MapField.convertMapToList(MapField$MutatabilityAwareMap) MapField.java","12","0" +"com.google.protobuf.MapField.getList() MapField.java","12","0" +"com.google.protobuf.MapField$ImmutableMessageConverter.convertKeyAndValueToMessage(Object, Object) MapField.java","12","0" +"com.google.protobuf.TextFormat.() TextFormat.java","12","0" +"com.google.protobuf.TextFormat$TextGenerator.eol() TextFormat.java","12","12" +"com.google.protobuf.UnknownFieldSet.getSerializedSize() UnknownFieldSet.java","12","12" +"io.grpc.internal.AbstractServerStream.(WritableBufferAllocator, StatsTraceContext) AbstractServerStream.java","12","0" +"io.grpc.internal.AbstractStream$TransportState.messagesAvailable(StreamListener$MessageProducer) AbstractStream.java","12","0" +"io.grpc.internal.CensusStatsModule$ServerTracer.(CensusStatsModule, TagContext) CensusStatsModule.java","12","0" +"io.grpc.internal.CensusTracingModule$ServerTracerFactory.newServerStreamTracer(String, Metadata) CensusTracingModule.java","12","0" +"io.grpc.internal.KeepAliveManager.(KeepAliveManager$KeepAlivePinger, ScheduledExecutorService, long, long, boolean) KeepAliveManager.java","12","0" +"io.grpc.internal.MessageDeframer.processBody() MessageDeframer.java","12","0" +"io.grpc.internal.ServerCallImpl.newServerStreamListener(ServerCall$Listener) ServerCallImpl.java","12","0" +"io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.(ServerCallImpl, ServerCall$Listener, Context$CancellableContext) ServerCallImpl.java","12","0" +"io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener.messagesAvailable(StreamListener$MessageProducer) ServerImpl.java","12","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler.(ChannelPromise, Http2Connection, ServerTransportListener, List, TransportTracer, Http2ConnectionDecoder, Http2ConnectionEncoder, Http2Settings, int, long, long, long, long, long, KeepAliveEnforcer) NettyServerHandler.java","12","12" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerStream.(Channel, NettyServerStream$TransportState, Attributes, String, StatsTraceContext, TransportTracer) NettyServerStream.java","12","0" +"io.grpc.netty.shaded.io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor.channelRead(ChannelHandlerContext, Object) ServerBootstrap.java","12","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.heapBuffer(int, int) AbstractByteBufAllocator.java","12","0" +"io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.heapBuffer() AbstractByteBufAllocator.java","12","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolChunk.(PoolArena, Object, int, int, int, int, int) PoolChunk.java","12","12" +"io.grpc.netty.shaded.io.netty.buffer.Unpooled.buffer() Unpooled.java","12","0" +"io.grpc.netty.shaded.io.netty.buffer.UnpooledByteBufAllocator.newHeapBuffer(int, int) UnpooledByteBufAllocator.java","12","12" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel.(Channel) AbstractChannel.java","12","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel.(Channel, LinuxSocket, SocketAddress) AbstractEpollChannel.java","12","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollSocketChannel.newUnsafe() EpollSocketChannel.java","12","0" +"io.grpc.netty.shaded.io.netty.channel.epoll.EpollSocketChannel.newUnsafe() EpollSocketChannel.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder$1.cumulate(ByteBufAllocator, ByteBuf, ByteBuf) ByteToMessageDecoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.DefaultHeaders.(HashingStrategy, ValueConverter) DefaultHeaders.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.DefaultHeaders$NameValidator.() DefaultHeaders.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http.HttpResponseStatus.() HttpResponseStatus.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http.HttpResponseStatus.(int, String, boolean) HttpResponseStatus.java","12","12" +"io.grpc.netty.shaded.io.netty.handler.codec.http.HttpResponseStatus.newStatus(int, String) HttpResponseStatus.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.CharSequenceMap.() CharSequenceMap.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.CharSequenceMap.(boolean) CharSequenceMap.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.CharSequenceMap.(boolean, ValueConverter) CharSequenceMap.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder.remoteSettings(Http2Settings) DecoratingHttp2ConnectionEncoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection$ConnectionStream.(DefaultHttp2Connection) DefaultHttp2Connection.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultEndpoint.addStream(DefaultHttp2Connection$DefaultStream) DefaultHttp2Connection.java","12","12" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultEndpoint.createStream(int, boolean) DefaultHttp2Connection.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultEndpoint.createStream(int, boolean) DefaultHttp2Connection.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultStream.(DefaultHttp2Connection, int, Http2Stream$State) DefaultHttp2Connection.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onSettingsRead(ChannelHandlerContext, Http2Settings) DefaultHttp2ConnectionDecoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$PrefaceFrameListener.onSettingsRead(ChannelHandlerContext, Http2Settings) DefaultHttp2ConnectionDecoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.remoteSettings(Http2Settings) DefaultHttp2ConnectionEncoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readSettingsFrame(ChannelHandlerContext, ByteBuf, Http2FrameListener) DefaultHttp2FrameReader.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersEncoder.(Http2HeadersEncoder$SensitivityDetector, HpackEncoder) DefaultHttp2HeadersEncoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2RemoteFlowController.initialWindowSize(int) DefaultHttp2RemoteFlowController.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2RemoteFlowController$WritabilityMonitor.initialWindowSize(int) DefaultHttp2RemoteFlowController.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackDecoder.(long, int) HpackDecoder.java","12","12" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackDecoder.(long) HpackDecoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackEncoder.(boolean, int, int) HpackEncoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackEncoder.(boolean) HpackEncoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackEncoder.() HpackEncoder.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.closeStream(Http2Stream, ChannelFuture) Http2ConnectionHandler.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.closeStreamLocal(Http2Stream, ChannelFuture) Http2ConnectionHandler.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(ChannelHandlerContext, ByteBuf, List) Http2ConnectionHandler.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onSettingsRead(ChannelHandlerContext, Http2Settings) Http2InboundFrameLogger.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.WeightedFairQueueByteDistributor$State.(WeightedFairQueueByteDistributor, int, Http2Stream, int) WeightedFairQueueByteDistributor.java","12","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.WeightedFairQueueByteDistributor$State.(WeightedFairQueueByteDistributor, Http2Stream, int) WeightedFairQueueByteDistributor.java","12","0" +"io.opencensus.stats.NoopStats.newNoopMeasureMap() NoopStats.java","12","0" +"io.opencensus.stats.NoopStats$NoopStatsRecorder.newMeasureMap() NoopStats.java","12","0" +"io.opencensus.trace.SpanContext.() SpanContext.java","12","0" +"java.lang.ClassLoader.checkPackageAccess(Class, ProtectionDomain) ClassLoader.java","12","12" +"java.lang.invoke.LambdaForm$MH.979943848.linkToTargetMethod(Object, long, Object) LambdaForm$MH","12","12" +"java.util.Collections$UnmodifiableCollection$1.next() Collections.java","12","12" +"org.apache.ignite.internal.binary.BinaryClassDescriptor.preWrite(BinaryWriterExImpl, Object) BinaryClassDescriptor.java","12","0" +"org.apache.ignite.internal.binary.BinaryReaderExImpl.streamPosition(int) BinaryReaderExImpl.java","12","12" +"org.apache.ignite.internal.binary.streams.BinaryHeapOutputStream.(int) BinaryHeapOutputStream.java","12","0" +"org.apache.ignite.internal.binary.streams.BinaryHeapOutputStream.ensureCapacity(int) BinaryHeapOutputStream.java","12","0" +"org.apache.ignite.internal.binary.streams.BinaryMemoryAllocatorChunk.reallocate(byte[], int) BinaryMemoryAllocatorChunk.java","12","12" +"org.apache.ignite.internal.client.thin.PayloadOutputChannel.(ClientChannel) PayloadOutputChannel.java","12","0" +"org.apache.ignite.internal.client.thin.TcpClientTransactions.tx() TcpClientTransactions.java","12","0" +"org.apache.ignite.internal.client.thin.TcpClientTransactions.txStart(TransactionConcurrency, TransactionIsolation) TcpClientTransactions.java","12","0" +"org.apache.ignite.internal.client.thin.TcpClientTransactions.txStart0(TransactionConcurrency, TransactionIsolation, Long, String) TcpClientTransactions.java","12","12" +"io.grpc.netty.shaded.io.netty.channel.unix.Socket.accept(byte[]) Socket.java","11","0" +"io.grpc.internal.CompositeReadableBuffer.addBuffer(ReadableBuffer) CompositeReadableBuffer.java","11","0" +"io.grpc.internal.CompositeReadableBuffer.close() CompositeReadableBuffer.java","11","0" +"io.grpc.internal.MessageDeframer.readRequiredBytes() MessageDeframer.java","11","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolArena$DirectArena.newByteBuf(int) PoolArena.java","11","0" +"io.grpc.internal.MessageDeframer.(MessageDeframer$Listener, Decompressor, int, StatsTraceContext, TransportTracer) MessageDeframer.java","11","0" +"io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.() ByteToMessageDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackDecoder.() HpackDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.CodecOutputList.() CodecOutputList.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.touch(Object, AbstractChannelHandlerContext) DefaultChannelPipeline.java","10","0" +"io.grpc.internal.AbstractReadableBuffer.readInt() AbstractReadableBuffer.java","10","0" +"io.grpc.internal.CompositeReadableBuffer.advanceBufferIfNecessary() CompositeReadableBuffer.java","10","0" +"io.grpc.internal.CompositeReadableBuffer.execute(CompositeReadableBuffer$ReadOperation, int) CompositeReadableBuffer.java","10","0" +"io.grpc.internal.CompositeReadableBuffer.readUnsignedByte() CompositeReadableBuffer.java","10","0" +"io.grpc.internal.MessageDeframer.processHeader() MessageDeframer.java","10","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyReadableBuffer.close() NettyReadableBuffer.java","10","0" +"com.google.protobuf.DescriptorProtos$FieldDescriptorProto.() DescriptorProtos.java","10","0" +"org.apache.ignite.internal.binary.streams.BinaryAbstractInputStream.readByte() BinaryAbstractInputStream.java","10","10" +"io.grpc.netty.shaded.io.netty.buffer.PoolThreadCache.createSubPageCaches(int, int, PoolArena$SizeClass) PoolThreadCache.java","10","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolThreadCache$MemoryRegionCache.() PoolThreadCache.java","10","0" +"org.apache.ignite.internal.binary.streams.BinaryAbstractOutputStream.unsafeEnsure(int) BinaryAbstractOutputStream.java","10","10" +"io.grpc.netty.shaded.io.grpc.netty.AbstractNettyHandler.sendInitialConnectionWindow() AbstractNettyHandler.java","10","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolThreadCache.add(PoolArena, PoolChunk, ByteBuffer, long, int, PoolArena$SizeClass) PoolThreadCache.java","10","0" +"io.grpc.netty.shaded.io.netty.buffer.PoolThreadCache.cache(PoolArena, int, PoolArena$SizeClass) PoolThreadCache.java","10","0" +"io.grpc.netty.shaded.io.netty.util.ReferenceCountUtil.release(Object) ReferenceCountUtil.java","10","0" +"io.grpc.netty.shaded.io.netty.util.ReferenceCountUtil.safeRelease(Object) ReferenceCountUtil.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader$HeadersBlockBuilder.headers() DefaultHttp2FrameReader.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2HeadersDecoder.decodeHeaders(int, ByteBuf) DefaultHttp2HeadersDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackDecoder.decode(int, ByteBuf, Http2Headers, boolean) HpackDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackDecoder.decode(ByteBuf, HpackDecoder$Sink) HpackDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.HpackDecoder.readName(int) HpackDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader$1.(DefaultHttp2FrameReader, int, ChannelHandlerContext, int, short, boolean, int, Http2Flags) DefaultHttp2FrameReader.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader$HeadersContinuation.(DefaultHttp2FrameReader, DefaultHttp2FrameReader$1) DefaultHttp2FrameReader.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader$HeadersContinuation.(DefaultHttp2FrameReader) DefaultHttp2FrameReader.java","10","0" +"io.grpc.internal.AbstractServerStream.close(Status, Metadata) AbstractServerStream.java","10","0" +"io.grpc.internal.ServerCallImpl.close(Status, Metadata) ServerCallImpl.java","10","0" +"io.grpc.internal.ServerCallImpl.closeInternal(Status, Metadata) ServerCallImpl.java","10","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerStream$Sink.writeTrailers(Metadata, boolean, Status) NettyServerStream.java","10","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.writeStringField(String) BinaryWriterExImpl.java","10","10" +"io.opencensus.tags.TagValue.create(String) TagValue.java","10","0" +"io.opencensus.tags.TagValue.isValid(String) TagValue.java","10","0" +"io.grpc.internal.DeprecatedCensusConstants.() DeprecatedCensusConstants.java","10","0" +"io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.() RpcMeasureConstants.java","10","0" +"com.futurewei.alcor.netwconfigmanager.server.grpc.IpInterceptor.interceptCall(ServerCall, Metadata, ServerCallHandler) IpInterceptor.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.(DefaultChannelPipeline, EventExecutor, String, Class) AbstractChannelHandlerContext.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask.isSkippable(Class, String, Class[]) ChannelHandlerMask.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask.mask(Class) ChannelHandlerMask.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask.mask0(Class) ChannelHandlerMask.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask$2.run() ChannelHandlerMask.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask$2.run() ChannelHandlerMask.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelHandlerContext.(DefaultChannelPipeline, EventExecutor, String, ChannelHandler) DefaultChannelHandlerContext.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.newContext(EventExecutorGroup, String, ChannelHandler) DefaultChannelPipeline.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection.verifyKey(Http2Connection$PropertyKey) DefaultHttp2Connection.java","10","10" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultStream.getProperty(Http2Connection$PropertyKey) DefaultHttp2Connection.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.unconsumedBytes(Http2Stream) DefaultHttp2ConnectionDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(ChannelHandlerContext, int, ByteBuf, int, boolean) DefaultHttp2ConnectionDecoder.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(ChannelHandlerContext, ByteBuf, int, Http2FrameListener) DefaultHttp2FrameReader.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2LocalFlowController.state(Http2Stream) DefaultHttp2LocalFlowController.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2LocalFlowController.unconsumedBytes(Http2Stream) DefaultHttp2LocalFlowController.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onDataRead(ChannelHandlerContext, int, ByteBuf, int, boolean) Http2InboundFrameLogger.java","10","0" +"io.grpc.ServerInterceptors$InterceptCallHandler.startCall(ServerCall, Metadata) ServerInterceptors.java","10","0" +"java.security.AccessController.doPrivileged(PrivilegedExceptionAction) AccessController.java (native)","10","0" +"org.apache.ignite.internal.binary.BinaryClassDescriptor.postWrite(BinaryWriterExImpl) BinaryClassDescriptor.java","10","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.postWrite(boolean, boolean) BinaryWriterExImpl.java","10","0" +"org.apache.ignite.internal.binary.BinaryWriterSchemaHolder.write(BinaryOutputStream, int, boolean) BinaryWriterSchemaHolder.java","10","10" +"java.util.HashMap$EntryIterator.next() HashMap.java","10","10" +"io.grpc.netty.shaded.io.netty.buffer.ByteBufUtil.hexDump(byte[], int, int) ByteBufUtil.java","10","0" +"io.grpc.netty.shaded.io.netty.buffer.ByteBufUtil$HexUtil.() ByteBufUtil.java","10","10" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel.toString() AbstractChannel.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelId.asShortText() DefaultChannelId.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2FrameLogger.logSettings(Http2FrameLogger$Direction, ChannelHandlerContext, Http2Settings) Http2FrameLogger.java","10","0" +"io.grpc.netty.shaded.io.netty.util.internal.logging.AbstractInternalLogger.log(InternalLogLevel, String, Object[]) AbstractInternalLogger.java","10","0" +"io.grpc.netty.shaded.io.netty.util.internal.logging.LocationAwareSlf4JLogger.debug(String, Object[]) LocationAwareSlf4JLogger.java","10","0" +"org.slf4j.helpers.MessageFormatter.arrayFormat(String, Object[]) MessageFormatter.java","10","0" +"com.google.protobuf.CodedInputStream$ArrayDecoder.readRawVarint32() CodedInputStream.java","10","10" +"com.google.protobuf.DescriptorProtos$EnumDescriptorProto.(CodedInputStream, ExtensionRegistryLite, DescriptorProtos$1) DescriptorProtos.java","10","0" +"com.google.protobuf.DescriptorProtos$EnumDescriptorProto.(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","10","0" +"com.google.protobuf.DescriptorProtos$EnumDescriptorProto$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","10","0" +"com.google.protobuf.DescriptorProtos$EnumDescriptorProto$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) DescriptorProtos.java","10","0" +"org.apache.ignite.internal.binary.BinaryContext.updateMetadata(int, BinaryMetadata, boolean) BinaryContext.java","10","0" +"org.apache.ignite.internal.client.thin.TcpIgniteClient$ClientBinaryMetadataHandler.addMeta(int, BinaryType, boolean) TcpIgniteClient.java","10","0" +"com.futurewei.alcor.schema.Subnet$SubnetConfiguration.internalGetFieldAccessorTable() Subnet.java","10","0" +"com.google.protobuf.CodedInputStream$ArrayDecoder.readBytes() CodedInputStream.java","10","0" +"com.futurewei.alcor.schema.Port$PortConfiguration.getDeviceIdBytes() Port.java","10","0" +"com.google.protobuf.GeneratedMessageV3.hasField(Descriptors$FieldDescriptor) GeneratedMessageV3.java","10","0" +"com.google.protobuf.GeneratedMessageV3$FieldAccessorTable$SingularFieldAccessor.has(GeneratedMessageV3) GeneratedMessageV3.java","10","0" +"com.futurewei.alcor.common.utils.CommonUtil.isNullOrEmpty(String) CommonUtil.java","10","0" +"java.lang.String.trim() String.java","10","10" +"java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1.hasNext() Collections.java","10","10" +"com.futurewei.alcor.schema.Subnet.() Subnet.java","10","0" +"com.google.protobuf.Descriptors$Descriptor.getFields() Descriptors.java","10","0" +"com.google.protobuf.MapEntry.getAllFields() MapEntry.java","10","0" +"java.util.Collections.unmodifiableList(List) Collections.java","10","10" +"com.google.protobuf.Descriptors$Descriptor.crossLink() Descriptors.java","10","0" +"com.google.protobuf.Descriptors$FieldDescriptor.crossLink() Descriptors.java","10","0" +"com.google.protobuf.Descriptors$FileDescriptor.crossLink() Descriptors.java","10","0" +"io.micrometer.core.instrument.binder.logging.MetricsTurboFilter.decide(Marker, Logger, Level, String, Object[], Throwable) LogbackMetrics.java","10","0" +"io.micrometer.core.instrument.Counter.increment() Counter.java","10","0" +"io.micrometer.core.instrument.cumulative.CumulativeCounter.increment(double) CumulativeCounter.java","10","10" +"com.futurewei.alcor.schema.DHCP.() DHCP.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.validateHeadersSentState(Http2Stream, Http2Headers, boolean, boolean) DefaultHttp2ConnectionEncoder.java","10","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.handles() BinaryWriterExImpl.java","10","10" +"java.util.HashSet.(int) HashSet.java","10","10" +"com.futurewei.alcor.schema.Neighbor$NeighborConfiguration$FixedIp.getSerializedSize() Neighbor.java","10","0" +"com.futurewei.alcor.schema.Neighbor$NeighborType.() Neighbor.java","10","0" +"com.google.protobuf.Descriptors$Descriptor.(DescriptorProtos$DescriptorProto, Descriptors$FileDescriptor, Descriptors$Descriptor, int) Descriptors.java","10","0" +"com.google.protobuf.Descriptors$Descriptor.(DescriptorProtos$DescriptorProto, Descriptors$FileDescriptor, Descriptors$Descriptor, int, Descriptors$1) Descriptors.java","10","0" +"com.google.protobuf.Descriptors$FieldDescriptor.() Descriptors.java","10","0" +"com.google.protobuf.WireFormat$FieldType.() WireFormat.java","10","0" +"io.grpc.internal.AbstractServerStream$TransportState.closeListener(Status) AbstractServerStream.java","10","0" +"io.grpc.internal.AbstractServerStream$TransportState.complete() AbstractServerStream.java","10","0" +"io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener.closed(Status) ServerImpl.java","10","0" +"io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener.closedInternal(Status) ServerImpl.java","10","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler$6.operationComplete(Future) NettyServerHandler.java","10","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler$6.operationComplete(ChannelFuture) NettyServerHandler.java","10","0" +"io.grpc.netty.shaded.io.grpc.netty.NettyServerStream$TransportState.complete() NettyServerStream.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.AbstractChannel.flush() AbstractChannel.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelPromise) ChannelOutboundBuffer.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.flush() DefaultChannelPipeline.java","10","0" +"io.grpc.netty.shaded.io.netty.channel.DefaultChannelPromise.trySuccess() DefaultChannelPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2CodecUtil$SimpleChannelPromiseAggregator.tryPromise() Http2CodecUtil.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2CodecUtil$SimpleChannelPromiseAggregator.trySuccess(Void) Http2CodecUtil.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2CodecUtil$SimpleChannelPromiseAggregator.trySuccess(Object) Http2CodecUtil.java","10","0" +"io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.flush(ChannelHandlerContext) Http2ConnectionHandler.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListener0(Future, GenericFutureListener) DefaultPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListeners() DefaultPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListenersNow() DefaultPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setSuccess0(Object) DefaultPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setValue0(Object) DefaultPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.trySuccess(Object) DefaultPromise.java","10","0" +"io.grpc.netty.shaded.io.netty.util.internal.PromiseNotificationUtil.trySuccess(Promise, Object, InternalLogger) PromiseNotificationUtil.java","10","0" +"io.jaegertracing.internal.reporters.RemoteReporter$FlushCommand.execute() RemoteReporter.java","10","0" +"com.futurewei.alcor.schema.Goalstate$HostResources.internalGetFieldAccessorTable() Goalstate.java","10","0" +"com.futurewei.alcor.schema.Port$PortConfiguration.getMacAddressBytes() Port.java","10","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.(BinaryContext) BinaryWriterExImpl.java","10","0" +"org.apache.ignite.internal.binary.BinaryWriterExImpl.(BinaryContext, BinaryThreadLocalContext) BinaryWriterExImpl.java","10","0" +"com.google.protobuf.CodedOutputStream.computeTagSize(int) CodedOutputStream.java","10","10" +"com.google.protobuf.CodedOutputStream.computeUInt32Size(int, int) CodedOutputStream.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.AbstractScheduledEventExecutor.pollScheduledTask(long) AbstractScheduledEventExecutor.java","10","10" +"io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor.fetchFromScheduledTaskQueue() SingleThreadEventExecutor.java","10","0" +"java.lang.String.(byte[], int, int, Charset) String.java","10","10" +"java.util.concurrent.ConcurrentHashMap.put(Object, Object) ConcurrentHashMap.java","10","10" +"com.futurewei.alcor.schema.Port$PortConfiguration.(CodedInputStream, ExtensionRegistryLite) Port.java","10","10" +"com.futurewei.alcor.schema.Port$PortConfiguration$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortConfiguration$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortState.(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortState$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortState$1.parsePartialFrom(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortState$Builder.mergeFrom(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortState$Builder.mergeFrom(CodedInputStream, ExtensionRegistryLite) Port.java","10","0" +"com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(MessageLite$Builder, ExtensionRegistryLite) CodedInputStream.java","10","0" +"com.google.protobuf.MapField$MutatabilityAwareMap.get(Object) MapField.java","10","0" +"java.util.Collections$UnmodifiableMap.get(Object) Collections.java","10","0" +"com.google.protobuf.ByteString.isEmpty() ByteString.java","10","10" +"com.futurewei.alcor.schema.Port$PortConfiguration.writeTo(CodedOutputStream) Port.java","10","0" +"com.futurewei.alcor.schema.Port$PortState.writeTo(CodedOutputStream) Port.java","10","0" +"com.google.protobuf.CodedOutputStream$ArrayEncoder.writeMessage(int, MessageLite) CodedOutputStream.java","10","0" +"com.google.protobuf.CodedOutputStream$ArrayEncoder.writeMessageNoTag(MessageLite) CodedOutputStream.java","10","0" +"java.util.Collections$UnmodifiableList.get(int) Collections.java","10","10" +"io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor.pollTask() SingleThreadEventExecutor.java","10","0" +"io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor.pollTaskFrom(Queue) SingleThreadEventExecutor.java","10","10" +"java.util.concurrent.ArrayBlockingQueue.take() ArrayBlockingQueue.java","10","10" +"java.lang.ThreadLocal.set(Object) ThreadLocal.java","10","10" +"org.apache.ignite.internal.util.IgniteUtils.restoreOldIgniteName(String, String) IgniteUtils.java","10","0" From f97e2d08877b1ac7383c8ffd6ec842d7fa12bbc3 Mon Sep 17 00:00:00 2001 From: Prasad Kommoju Date: Tue, 14 Dec 2021 12:03:16 -0800 Subject: [PATCH 4/5] Fix the performance measurments --- .../images/sql_and_scan_query_perf_comp.png | Bin 30122 -> 27824 bytes .../sql_and_scan_query_perf_comp.csv | 14 ++++++------ .../sql_and_scan_query_pref_comp.adoc | 20 +++++++++--------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/modules/ROOT/images/sql_and_scan_query_perf_comp.png b/docs/modules/ROOT/images/sql_and_scan_query_perf_comp.png index cbec8d34dc2b72519e76874a71ce2f90a325ca98..bdd6e58eae4aba76a5103b8e38a51bc4438f273a 100644 GIT binary patch literal 27824 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 literal 30122 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 Date: Tue, 14 Dec 2021 15:40:45 -0800 Subject: [PATCH 5/5] Fix more descripancies in SQL and Scan performance results --- ...adoc => sql_and_scan_query_perf_comp.adoc} | 30 +++++++++++-------- .../sql_and_scan_query_perf_comp.csv | 14 ++++----- scripts/sql_and_scan_query_perf_comp.gps | 7 +++-- 3 files changed, 29 insertions(+), 22 deletions(-) rename docs/modules/ROOT/pages/performance/{sql_and_scan_query_pref_comp.adoc => sql_and_scan_query_perf_comp.adoc} (56%) diff --git a/docs/modules/ROOT/pages/performance/sql_and_scan_query_pref_comp.adoc b/docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.adoc similarity index 56% rename from docs/modules/ROOT/pages/performance/sql_and_scan_query_pref_comp.adoc rename to docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.adoc index 4a32b8699..2db9c01df 100644 --- a/docs/modules/ROOT/pages/performance/sql_and_scan_query_pref_comp.adoc +++ b/docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.adoc @@ -16,10 +16,12 @@ This report is about comparing the performance of the queries on non-key fields All times are in micro seconds. Time axis (y) in the histogram is in logscale. Operations are on NodeInfo object. Benchmark tool, DPM, NCM and NMM run on the same physical machine in the lab. Ignite is run on two different physical machines in the lab (partitioned). -Number of entries in both SQL and Scan are 1M, 1000 entries are queried on. -The first query always takes way too much time compared to the subsequent -ones and hence ignored when computing the statistics. +Number of entries in both SQL and Scan are 1M. + +1000 queries are run but the performance statistics are only for 999 +queries, ignoring the first one which always takes orders of +magnitude longer. SQL_QUERY_EXEC time represents time required to execute the SQLFieldsQuery (cache.query() API). @@ -33,19 +35,23 @@ instantiation, cache.withKeepBinary().query(...) SCAN_CURSOR_FETCH time represents time required to extract the result from result set (cursor, cursor.getAll() API). -For Insert operation, MAX represents total time to insert 1M entires into the cache and AVG represents the average time to insert one single entry. All other statistcs for Insert are not relevant and are set to zero. +Total time is applicable only to insert operations therefore query execution +and fetch times show "N/A" for these operations. + +For Insert operation, only total time for million insertions and average for +signle insert is relevant therefore other times are set to "N/A" (Not +Applicable). == Results |=== -|OPERATION_TYPE| MIN| MAX| AVG| MEDIAN| MODE| P99 -|SQL_EXEC| 1.0000| 16.0000| 1.8739| 1.0000| 1.0000| 7.0000 -|SCAN_EXEC| 530182.0000| 785735.0000|561550.0000|552705.0000|543704.0000|667240.0000 -|SQL_FECTH| 0.0000| 1.0000| 0.6717| 1.0000| 1.0000| 1.0000 -|SCAN_FETCH| 0.0000| 8.0000| 0.1411| 0.0000| 0.0000| 3.0000 -|SQL_INSERT| 0.0000|929676278.0000| 929.6763| 0.0000| 0.0000| 0.0000 -|SCAN_INSERT| 0.0000|812451365.0000| 812.4514| 0.0000| 0.0000| 0.0000 +|OPERATION_TYPE|MIN |MAX |AVG |TOTAL |MEDIAN |MODE |P99 +|SQL_EXEC | 1.0000| 16.0000| 1.8739|N/A | 1.0000| 1.0000| 7.0000 +|SCAN_EXEC |530,182.0000|785,735.0000|561,550.0000|N/A |552,705.0000|543,704.0000|667,240.0000 +|SQL_FECTH | 0.0000| 3.0000| 0.7537|N/A | 1.0000| 1.0000| 1.0000 +|SCAN_FETCH | 0.0000| 8.0000| 0.1411|N/A | 0.0000| 0.0000| 3.0000 +|SQL_INSERT | 0.0000|N/A | 929.6800|929,676,278.0000|N/A |N/A |N/A +|SCAN_INSERT | 0.0000|N/A | 812.4500|812,451,365.0000|N/A |N/A |N/A |=== == Plot of the results image::sql_and_scan_query_perf_comp.png[] - diff --git a/docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.csv b/docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.csv index a1ba06927..0d52f6cba 100644 --- a/docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.csv +++ b/docs/modules/ROOT/pages/performance/sql_and_scan_query_perf_comp.csv @@ -1,7 +1,7 @@ -OPERATION_TYPE MIN MAX AVG MEDIAN MODE P99 -SQL_EXEC 1.0000 16.0000 1.8739 1.0000 1.0000 7.0000 -SCAN_EXEC 530182.0000 785735.0000 561550.0000 552705.0000 543704.0000 667240.0000 -SQL_FECTH 0.0000 1.0000 0.6717 1.0000 1.0000 1.0000 -SCAN_FETCH 0.0000 8.0000 0.1411 0.0000 0.0000 3.0000 -SQL_INSERT 0.0000 929676278.0000 929.6763 0.0000 0.0000 0.0000 -SCAN_INSERT 0.0000 812451365.0000 812.4514 0.0000 0.0000 0.0000 +OPERATION_TYPE MIN MAX AVG TOTAL MEDIAN MODE P99 +SQL_EXEC 1.0000 16.0000 1.8739 N/A 1.0000 1.0000 7.0000 +SCAN_EXEC 530182.0000 785735.0000 561550.0000 N/A 552705.0000 543704.0000 667240.0000 +SQL_FECTH 0.0000 3.0000 0.7537 N/A 1.0000 1.0000 1.0000 +SCAN_FETCH 0.0000 8.0000 0.1411 N/A 0.0000 0.0000 3.0000 +SQL_INSERT 0.0000 N/A 929.6800 929676278.0000 N/A N/A N/A +SCAN_INSERT 0.0000 N/A 812.4500 812451365.0000 N/A N/A N/A diff --git a/scripts/sql_and_scan_query_perf_comp.gps b/scripts/sql_and_scan_query_perf_comp.gps index e63b95324..f80af34ae 100644 --- a/scripts/sql_and_scan_query_perf_comp.gps +++ b/scripts/sql_and_scan_query_perf_comp.gps @@ -3,8 +3,9 @@ set output 'sql_and_scan_query_perf_comp.png' set style fill solid 1.00 border lt -1 set key fixed right top vertical Right noreverse noenhanced autotitle nobox set style histogram clustered gap 1 title textcolor lt -1 -set datafile missing '-' -# set datafile separator "|" +set datafile missing 'N/A' +set decimalsign locale +set decimalsign "." set grid show grid set style data histograms @@ -18,4 +19,4 @@ set ylabel "Time in Micro seconds" set logscale y NO_ANIMATION=1 -plot newhistogram "", 'sql_and_scan_query_perf_comp.csv' using 2:xtic(1) ti "min", '' u 3:xtic(1) ti "max", '' u 4:xtic(1) ti "avg", '' u 5:xtic(1) ti "median", '' u 6:xtic(1) ti "P95", '' u 7:xtic(1) ti "P99" +plot newhistogram "", 'sql_and_scan_query_perf_comp.csv' using 2:xtic(1) ti "min", '' u 3:xtic(1) ti "max", '' u 4:xtic(1) ti "avg", '' u 5:xtic(1) ti "total", '' u 6:xtic(1) ti "median", '' u 7:xtic(1) ti "P99"