You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/10/04 16:03:56 UTC

[48/50] [abbrv] ignite git commit: Lock tracing

Lock tracing


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/aa868808
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/aa868808
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/aa868808

Branch: refs/heads/ignite-5797
Commit: aa8688084226ad4f1ee27319c3a1bde4f34f9bc9
Parents: 987ba6b
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Oct 4 17:09:09 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Oct 4 17:09:09 2018 +0300

----------------------------------------------------------------------
 .../distributed/GridDistributedLockRequest.java | 25 ++++++++++++++--
 .../GridDistributedLockResponse.java            | 31 +++++++++++++++++---
 .../distributed/dht/GridDhtLockFuture.java      |  6 +++-
 .../distributed/dht/GridDhtLockRequest.java     | 11 +++++--
 .../distributed/dht/GridDhtLockResponse.java    | 27 +++++++++++++----
 .../dht/GridDhtTransactionalCacheAdapter.java   | 25 ++++++++++------
 .../cache/distributed/dht/GridDhtTxLocal.java   |  2 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |  2 --
 .../colocated/GridDhtColocatedLockFuture.java   |  6 +++-
 .../distributed/near/GridNearLockFuture.java    |  6 +++-
 .../distributed/near/GridNearLockRequest.java   | 10 +++++--
 .../distributed/near/GridNearLockResponse.java  |  8 +++--
 .../processors/trace/IgniteTraceAware.java      | 11 ++++++-
 13 files changed, 135 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
index 25a557c..8858e97 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
@@ -29,6 +29,8 @@ import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
+import org.apache.ignite.internal.processors.trace.IgniteTraceAware;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.lang.IgniteUuid;
@@ -41,7 +43,7 @@ import org.jetbrains.annotations.Nullable;
 /**
  * Lock request message.
  */
-public class GridDistributedLockRequest extends GridDistributedBaseMessage {
+public class GridDistributedLockRequest extends GridDistributedBaseMessage implements IgniteTraceAware {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -99,6 +101,9 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
     /** Additional flags. */
     private byte flags;
 
+    /** */
+    private EventsTrace evtsTrace;
+
     /**
      * Empty constructor.
      */
@@ -139,7 +144,8 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
         int txSize,
         boolean skipStore,
         boolean keepBinary,
-        boolean addDepInfo
+        boolean addDepInfo,
+        EventsTrace evtsTrace
     ) {
         super(lockVer, keyCnt, addDepInfo);
 
@@ -163,6 +169,21 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
 
         skipStore(skipStore);
         keepBinary(keepBinary);
+
+        this.evtsTrace = evtsTrace;
+    }
+
+    /** {@inheritDoc} */
+    @Override public void recordTracePoint(TracePoint pt) {
+        if (evtsTrace != null)
+            evtsTrace.recordTracePoint(pt);
+    }
+
+    /**
+     * @return Node trace.
+     */
+    public EventsTrace nodeTrace() {
+        return evtsTrace;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
index 4b21896..55470fd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
@@ -28,6 +28,8 @@ import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
+import org.apache.ignite.internal.processors.trace.IgniteTraceAware;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -41,7 +43,7 @@ import org.jetbrains.annotations.Nullable;
 /**
  * Lock response message.
  */
-public class GridDistributedLockResponse extends GridDistributedBaseMessage {
+public class GridDistributedLockResponse extends GridDistributedBaseMessage implements IgniteTraceAware {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -60,6 +62,9 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
     @GridDirectCollection(CacheObject.class)
     private List<CacheObject> vals;
 
+    /** */
+    private EventsTrace evtsTrace;
+
     /**
      * Empty constructor (required by {@link Externalizable}).
      */
@@ -67,6 +72,16 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
         /* No-op. */
     }
 
+    /** {@inheritDoc} */
+    @Override public void recordTracePoint(TracePoint pt) {
+        if (evtsTrace != null)
+            evtsTrace.recordTracePoint(pt);
+    }
+
+    public EventsTrace nodeTrace() {
+        return evtsTrace;
+    }
+
     /**
      * @param cacheId Cache ID.
      * @param lockVer Lock version.
@@ -78,7 +93,9 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
         GridCacheVersion lockVer,
         IgniteUuid futId,
         int cnt,
-        boolean addDepInfo) {
+        boolean addDepInfo,
+        EventsTrace evtsTrace
+    ) {
         super(lockVer, cnt, addDepInfo);
 
         assert futId != null;
@@ -87,6 +104,8 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
         this.futId = futId;
 
         vals = new ArrayList<>(cnt);
+
+        this.evtsTrace = evtsTrace;
     }
 
     /**
@@ -100,7 +119,9 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
         GridCacheVersion lockVer,
         IgniteUuid futId,
         Throwable err,
-        boolean addDepInfo) {
+        boolean addDepInfo,
+        EventsTrace evtsTrace
+    ) {
         super(lockVer, 0, addDepInfo);
 
         assert futId != null;
@@ -123,7 +144,9 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
         IgniteUuid futId,
         int cnt,
         Throwable err,
-        boolean addDepInfo) {
+        boolean addDepInfo,
+        EventsTrace evtsTrace
+    ) {
         super(lockVer, cnt, addDepInfo);
 
         assert futId != null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index ef369cf..6cb86c9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -63,6 +63,7 @@ import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.processors.dr.GridDrType;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -555,6 +556,8 @@ public final class GridDhtLockFuture extends GridCacheCompoundIdentityFuture<Boo
             if (mini != null) {
                 assert mini.node().id().equals(nodeId);
 
+                tx.collectNodeTrace(nodeId, res.nodeTrace());
+
                 mini.onResult(res);
 
                 return;
@@ -946,7 +949,8 @@ public final class GridDhtLockFuture extends GridCacheCompoundIdentityFuture<Boo
                             skipStore,
                             cctx.store().configured(),
                             keepBinary,
-                            cctx.deploymentEnabled());
+                            cctx.deploymentEnabled(),
+                            tx.nodeTrace() != null ? new EventsTrace() : null);
 
                         try {
                             for (ListIterator<GridDhtCacheEntry> it = dhtMapping.listIterator(); it.hasNext(); ) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
index 1ac5818..0ec7096 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
@@ -34,6 +34,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockRequest;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
 import org.apache.ignite.internal.util.GridLeanMap;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -147,7 +148,8 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
         boolean skipStore,
         boolean storeUsed,
         boolean keepBinary,
-        boolean addDepInfo
+        boolean addDepInfo,
+        EventsTrace evtsTrace
     ) {
         super(cacheId,
             nodeId,
@@ -164,13 +166,14 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
             txSize,
             skipStore,
             keepBinary,
-            addDepInfo);
+            addDepInfo,
+            evtsTrace);
 
         this.topVer = topVer;
 
         storeUsed(storeUsed);
 
-        nearKeys = nearCnt == 0 ? Collections.<KeyCacheObject>emptyList() : new ArrayList<KeyCacheObject>(nearCnt);
+        nearKeys = nearCnt == 0 ? Collections.emptyList() : new ArrayList<>(nearCnt);
         invalidateEntries = new BitSet(dhtCnt == 0 ? nearCnt : dhtCnt);
 
         assert miniId != null;
@@ -179,6 +182,8 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
         this.subjId = subjId;
         this.taskNameHash = taskNameHash;
         this.accessTtl = accessTtl;
+
+        recordTracePoint(TracePoint.DHT_LOCK_REQUEST_CREATED);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
index 87abd6c..9f9ff6d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
@@ -32,6 +32,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockResponse;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.lang.IgniteUuid;
@@ -77,9 +78,16 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
      * @param cnt Key count.
      * @param addDepInfo Deployment info.
      */
-    public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, int cnt,
-        boolean addDepInfo) {
-        super(cacheId, lockVer, futId, cnt, addDepInfo);
+    public GridDhtLockResponse(
+        int cacheId,
+        GridCacheVersion lockVer,
+        IgniteUuid futId,
+        IgniteUuid miniId,
+        int cnt,
+        boolean addDepInfo,
+        EventsTrace evtsTrace
+    ) {
+        super(cacheId, lockVer, futId, cnt, addDepInfo, evtsTrace);
 
         assert miniId != null;
 
@@ -93,9 +101,16 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
      * @param err Error.
      * @param addDepInfo
      */
-    public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId,
-        Throwable err, boolean addDepInfo) {
-        super(cacheId, lockVer, futId, err, addDepInfo);
+    public GridDhtLockResponse(
+        int cacheId,
+        GridCacheVersion lockVer,
+        IgniteUuid futId,
+        IgniteUuid miniId,
+        Throwable err,
+        boolean addDepInfo,
+        EventsTrace evtsTrace
+    ) {
+        super(cacheId, lockVer, futId, err, addDepInfo, evtsTrace);
 
         assert miniId != null;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index 52638c0..2bc0f2d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -528,7 +528,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
             req.futureId(),
             req.miniId(),
             e,
-            ctx.deploymentEnabled());
+            ctx.deploymentEnabled(),
+            req.nodeTrace());
 
         try {
             ctx.io().send(nodeId, res, ctx.ioPolicy());
@@ -563,7 +564,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
 
         try {
             res = new GridDhtLockResponse(ctx.cacheId(), req.version(), req.futureId(), req.miniId(), cnt,
-                ctx.deploymentEnabled());
+                ctx.deploymentEnabled(), req.nodeTrace());
 
             dhtTx = startRemoteTx(nodeId, req, res);
             nearTx = isNearEnabled(cacheCfg) ? near().startRemoteTx(nodeId, req) : null;
@@ -590,7 +591,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
             U.error(log, err, e);
 
             res = new GridDhtLockResponse(ctx.cacheId(), req.version(), req.futureId(), req.miniId(),
-                new IgniteTxRollbackCheckedException(err, e), ctx.deploymentEnabled());
+                new IgniteTxRollbackCheckedException(err, e), ctx.deploymentEnabled(), req.nodeTrace());
 
             fail = true;
         }
@@ -603,7 +604,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
                 req.version(),
                 req.futureId(),
                 req.miniId(),
-                new IgniteCheckedException(err, e), ctx.deploymentEnabled());
+                new IgniteCheckedException(err, e), ctx.deploymentEnabled(),
+                req.nodeTrace());
 
             fail = true;
         }
@@ -1334,9 +1336,11 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
      * @param topVer Remap version.
      * @return Response.
      */
-    private GridNearLockResponse sendClientLockRemapResponse(ClusterNode nearNode,
+    private GridNearLockResponse sendClientLockRemapResponse(
+        ClusterNode nearNode,
         GridNearLockRequest req,
-        AffinityTopologyVersion topVer) {
+        AffinityTopologyVersion topVer
+    ) {
         assert topVer != null;
 
         GridNearLockResponse res = new GridNearLockResponse(
@@ -1348,7 +1352,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
             0,
             null,
             topVer,
-            ctx.deploymentEnabled());
+            ctx.deploymentEnabled(),
+            req.nodeTrace());
 
         try {
             ctx.io().send(nearNode, res, ctx.ioPolicy());
@@ -1394,7 +1399,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
                 entries.size(),
                 err,
                 null,
-                ctx.deploymentEnabled());
+                ctx.deploymentEnabled(),
+                tx.nodeTrace());
 
             if (err == null) {
                 res.pending(localDhtPendingVersions(entries, mappedVer));
@@ -1504,7 +1510,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
                 entries.size(),
                 e,
                 null,
-                ctx.deploymentEnabled());
+                ctx.deploymentEnabled(),
+                tx.nodeTrace());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
index 751ec3f..f3f3112 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
@@ -355,7 +355,7 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
             return chainOnePhasePrepare(fut);
         }
 
-        this.eventsTrace = eventsTrace;
+        eventsTrace = req.nodeTrace();
 
         if (state() != PREPARING) {
             if (!state(PREPARING)) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index 887c76b..523e6a2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -41,7 +41,6 @@ import org.apache.ignite.internal.IgniteDiagnosticPrepareContext;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.CacheEntryPredicate;
 import org.apache.ignite.internal.processors.cache.CacheInvokeEntry;
 import org.apache.ignite.internal.processors.cache.CacheLockCandidates;
 import org.apache.ignite.internal.processors.cache.CacheObject;
@@ -69,7 +68,6 @@ import org.apache.ignite.internal.processors.cache.mvcc.txlog.TxState;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
-import org.apache.ignite.internal.processors.cache.transactions.TxCounters;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.processors.dr.GridDrType;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter;

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index 9dbb8be..fc504a1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -61,6 +61,7 @@ import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
 import org.apache.ignite.internal.processors.cache.transactions.TxDeadlock;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
 import org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException;
 import org.apache.ignite.internal.util.future.GridEmbeddedFuture;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
@@ -486,6 +487,8 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF
         if (mini != null) {
             assert mini.node().id().equals(nodeId);
 
+            tx.collectNodeTrace(nodeId, res.nodeTrace());
+
             mini.onResult(res);
 
             return true;
@@ -1073,7 +1076,8 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF
                                         keepBinary,
                                         clientFirst,
                                         false,
-                                        cctx.deploymentEnabled());
+                                        cctx.deploymentEnabled(),
+                                        cctx.kernalContext().trace().tracingEnabled() ? new EventsTrace() : null);
 
                                     mapping.request(req);
                                 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index 6cd4514..9b26e77 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -57,6 +57,7 @@ import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
 import org.apache.ignite.internal.processors.cache.transactions.TxDeadlock;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
 import org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException;
 import org.apache.ignite.internal.util.future.GridEmbeddedFuture;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
@@ -525,6 +526,8 @@ public final class GridNearLockFuture extends GridCacheCompoundIdentityFuture<Bo
             if (log.isDebugEnabled())
                 log.debug("Found mini future for response [mini=" + mini + ", res=" + res + ']');
 
+            tx.collectNodeTrace(nodeId, res.nodeTrace());
+
             mini.onResult(res);
 
             if (log.isDebugEnabled())
@@ -1123,7 +1126,8 @@ public final class GridNearLockFuture extends GridCacheCompoundIdentityFuture<Bo
                                                 keepBinary,
                                                 clientFirst,
                                                 true,
-                                                cctx.deploymentEnabled());
+                                                cctx.deploymentEnabled(),
+                                                cctx.kernalContext().trace().tracingEnabled() ? new EventsTrace() : null);
 
                                             mapping.request(req);
                                         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
index f736cae..009d928 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
@@ -29,6 +29,8 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockRequest;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
+import org.apache.ignite.internal.processors.trace.IgniteTraceAware.TracePoint;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.lang.IgniteUuid;
@@ -141,7 +143,8 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
         boolean keepBinary,
         boolean firstClientReq,
         boolean nearCache,
-        boolean addDepInfo
+        boolean addDepInfo,
+        EventsTrace evtsTrace
     ) {
         super(
             cacheId,
@@ -159,7 +162,8 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
             txSize,
             skipStore,
             keepBinary,
-            addDepInfo);
+            addDepInfo,
+            evtsTrace);
 
         assert topVer.compareTo(AffinityTopologyVersion.ZERO) > 0;
 
@@ -175,6 +179,8 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
         setFlag(firstClientReq, FIRST_CLIENT_REQ_FLAG_MASK);
         setFlag(retVal, NEED_RETURN_VALUE_FLAG_MASK);
         setFlag(nearCache, NEAR_CACHE_FLAG_MASK);
+
+        recordTracePoint(TracePoint.NEAR_LOCK_REQUEST_CREATED);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
index e88f0a0..2bbe861 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockResponse;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.trace.EventsTrace;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.lang.IgniteUuid;
@@ -90,9 +91,10 @@ public class GridNearLockResponse extends GridDistributedLockResponse {
         int cnt,
         Throwable err,
         AffinityTopologyVersion clientRemapVer,
-        boolean addDepInfo
+        boolean addDepInfo,
+        EventsTrace evtsTrace
     ) {
-        super(cacheId, lockVer, futId, cnt, err, addDepInfo);
+        super(cacheId, lockVer, futId, cnt, err, addDepInfo, evtsTrace);
 
         assert miniId != 0;
 
@@ -104,6 +106,8 @@ public class GridNearLockResponse extends GridDistributedLockResponse {
 
         if (filterRes)
             this.filterRes = new boolean[cnt];
+
+        recordTracePoint(TracePoint.NEAR_LOCK_RESPONSE_CREATED);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/aa868808/modules/core/src/main/java/org/apache/ignite/internal/processors/trace/IgniteTraceAware.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/trace/IgniteTraceAware.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/trace/IgniteTraceAware.java
index 4356a3c..b61b8c9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/trace/IgniteTraceAware.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/trace/IgniteTraceAware.java
@@ -32,14 +32,23 @@ public interface IgniteTraceAware {
         MSG_NIO_RECEIVE,
         MSG_NIO_SEND,
         MSG_LISTENER_INVOKE,
+        NEAR_LOCK_REQUEST_CREATED,
+        NEAR_LOCK_RESPONSE_CREATED,
         NEAR_PREPARE_REQUEST_CREATED,
         NEAR_PREPARE_RESPONSE_CREATED,
+        DHT_LOCK_REQUEST_CREATED,
+        DHT_LOCK_RESPONSE_CREATED,
         DHT_PREPARE_REQUEST_CREATED,
         DHT_PREPARE_RESPONSE_CREATED,
         NEAR_FINISH_REQUEST_CREATED,
         NEAR_FINISH_RESPONSE_CREATED,
         DHT_FINISH_REQUEST_CREATED,
-        DHT_FINISH_RESPONSE_CREATED;
+        DHT_FINISH_RESPONSE_CREATED,
+        TX_LOCAL_WRITE_BEGIN,
+        TX_LOCAL_WRITE_END,
+        TX_LOCAL_WAL_SYNC_BEGIN,
+        TX_LOCAL_WAL_SYNC_END,
+        ;
 
         /** */
         private static final TracePoint[] VALS = values();