[ 
https://issues.apache.org/jira/browse/IGNITE-11835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitriy Govorukhin updated IGNITE-11835:
----------------------------------------
    Description: 
Support JMX/control.sh API for page lock dump

JMX
{code}
public interface PageLockMXBean  {
    void enableTracking();

    void disableTracking();

    boolean isTracingEnable();

    String dumpLocks();

    void dumpLocksToLog();

    String dumpLocksToFile();

    String dumpLocksToFile(String path);
}
{code}

control.sh
{code}
--diagnostic pageLocksTracker dump
--diagnostic pageLocksTracker dump log
--diagnostic pageLocksTracker dump file
--diagnostic pageLocksTracker dump file {path}
{code}

HeapArrayLockStack and HeapArrayLockStack output:
org.apache.ignite.internal.processors.cache.persistence.diagnostic.PageLockStackTest#testThreeReadPageLock_3
{code}
1. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        -> try read lock, pageId=1 [pageIdxHex=0000000000000001, partId=1, 
pageIdx=1, flags=00000000]

2. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

3. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        -> try read lock, pageId=11 [pageIdxHex=000000000000000b, partId=11, 
pageIdx=11, flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

4. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

5. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        -> try read lock, pageId=111 [pageIdxHex=000000000000006f, partId=111, 
pageIdx=111, flags=00000000]
        1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

6. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        2 pageId=111 [pageIdxHex=000000000000006f, partId=111, pageIdx=111, 
flags=00000000]
        1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

7. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        2 pageId=111 [pageIdxHex=000000000000006f, partId=111, pageIdx=111, 
flags=00000000]
        1 -
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

8. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]
{code}

HeapArrayLockLog and OffHeapLockLog
org.apache.ignite.internal.processors.cache.persistence.diagnostic.PageLockLogTest#testThreeReadPageLock_3
{code}
1. Step
main
locked pages = []
-> Try read lock     nextOpPageId=1, nextOpStructureId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]

2. Step
main
locked pages = [1(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]

3. Step
main
locked pages = [1(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
-> Try read lock     nextOpPageId=11, nextOpStructureId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]

4. Step
main
locked pages = [1(r=1|w=0),11(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]

5. Step
main
locked pages = [1(r=1|w=0),11(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
-> Try read lock     nextOpPageId=111, nextOpStructureId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]

6. Step
main
locked pages = [1(r=1|w=0),11(r=1|w=0),111(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]

7. Step
main
locked pages = [1(r=1|w=0),111(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
L=2 <- Read unlock   nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]

8. Step
main
locked pages = [1(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
L=2 <- Read unlock   nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=1 <- Read unlock   nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]

9. Step
main
locked pages = []

{code}


  was:
Support JMX/control.sh API for page lock dump

JMX
{code}
public interface PageLockMXBean  {
    void enableTracking();

    void disableTracking();

    boolean isTracingEnable();

    String dumpLocks();

    void dumpLocksToLog();

    String dumpLocksToFile();

    String dumpLocksToFile(String path);
}
{code}

HeapArrayLockStack and HeapArrayLockStack output:
org.apache.ignite.internal.processors.cache.persistence.diagnostic.PageLockStackTest#testThreeReadPageLock_3
{code}
1. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        -> try read lock, pageId=1 [pageIdxHex=0000000000000001, partId=1, 
pageIdx=1, flags=00000000]

2. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

3. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        -> try read lock, pageId=11 [pageIdxHex=000000000000000b, partId=11, 
pageIdx=11, flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

4. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

5. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        -> try read lock, pageId=111 [pageIdxHex=000000000000006f, partId=111, 
pageIdx=111, flags=00000000]
        1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

6. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        2 pageId=111 [pageIdxHex=000000000000006f, partId=111, pageIdx=111, 
flags=00000000]
        1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
flags=00000000]
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

7. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        2 pageId=111 [pageIdxHex=000000000000006f, partId=111, pageIdx=111, 
flags=00000000]
        1 -
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]

8. Step
main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
        0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
flags=00000000]
{code}

HeapArrayLockLog and OffHeapLockLog
org.apache.ignite.internal.processors.cache.persistence.diagnostic.PageLockLogTest#testThreeReadPageLock_3
{code}
1. Step
main
locked pages = []
-> Try read lock     nextOpPageId=1, nextOpStructureId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]

2. Step
main
locked pages = [1(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]

3. Step
main
locked pages = [1(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
-> Try read lock     nextOpPageId=11, nextOpStructureId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]

4. Step
main
locked pages = [1(r=1|w=0),11(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]

5. Step
main
locked pages = [1(r=1|w=0),11(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
-> Try read lock     nextOpPageId=111, nextOpStructureId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]

6. Step
main
locked pages = [1(r=1|w=0),11(r=1|w=0),111(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]

7. Step
main
locked pages = [1(r=1|w=0),111(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
L=2 <- Read unlock   nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]

8. Step
main
locked pages = [1(r=1|w=0)]
L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
[pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
L=2 <- Read unlock   nextOpPageId=11, nextOpCacheId=123 
[pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
L=1 <- Read unlock   nextOpPageId=111, nextOpCacheId=123 
[pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]

9. Step
main
locked pages = []

{code}



> Support JMX/control.sh API for page lock dump
> ---------------------------------------------
>
>                 Key: IGNITE-11835
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11835
>             Project: Ignite
>          Issue Type: Sub-task
>            Reporter: Dmitriy Govorukhin
>            Assignee: Dmitriy Govorukhin
>            Priority: Major
>             Fix For: 2.8
>
>
> Support JMX/control.sh API for page lock dump
> JMX
> {code}
> public interface PageLockMXBean  {
>     void enableTracking();
>     void disableTracking();
>     boolean isTracingEnable();
>     String dumpLocks();
>     void dumpLocksToLog();
>     String dumpLocksToFile();
>     String dumpLocksToFile(String path);
> }
> {code}
> control.sh
> {code}
> --diagnostic pageLocksTracker dump
> --diagnostic pageLocksTracker dump log
> --diagnostic pageLocksTracker dump file
> --diagnostic pageLocksTracker dump file {path}
> {code}
> HeapArrayLockStack and HeapArrayLockStack output:
> org.apache.ignite.internal.processors.cache.persistence.diagnostic.PageLockStackTest#testThreeReadPageLock_3
> {code}
> 1. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       -> try read lock, pageId=1 [pageIdxHex=0000000000000001, partId=1, 
> pageIdx=1, flags=00000000]
> 2. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> 3. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       -> try read lock, pageId=11 [pageIdxHex=000000000000000b, partId=11, 
> pageIdx=11, flags=00000000]
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> 4. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
> flags=00000000]
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> 5. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       -> try read lock, pageId=111 [pageIdxHex=000000000000006f, partId=111, 
> pageIdx=111, flags=00000000]
>       1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
> flags=00000000]
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> 6. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       2 pageId=111 [pageIdxHex=000000000000006f, partId=111, pageIdx=111, 
> flags=00000000]
>       1 pageId=11 [pageIdxHex=000000000000000b, partId=11, pageIdx=11, 
> flags=00000000]
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> 7. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       2 pageId=111 [pageIdxHex=000000000000006f, partId=111, pageIdx=111, 
> flags=00000000]
>       1 -
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> 8. Step
> main (time=1557216932196, 2019-05-07 11:15:32.196) locked pages stack:
>       0 pageId=1 [pageIdxHex=0000000000000001, partId=1, pageIdx=1, 
> flags=00000000]
> {code}
> HeapArrayLockLog and OffHeapLockLog
> org.apache.ignite.internal.processors.cache.persistence.diagnostic.PageLockLogTest#testThreeReadPageLock_3
> {code}
> 1. Step
> main
> locked pages = []
> -> Try read lock     nextOpPageId=1, nextOpStructureId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> 2. Step
> main
> locked pages = [1(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> 3. Step
> main
> locked pages = [1(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> -> Try read lock     nextOpPageId=11, nextOpStructureId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> 4. Step
> main
> locked pages = [1(r=1|w=0),11(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> 5. Step
> main
> locked pages = [1(r=1|w=0),11(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> -> Try read lock     nextOpPageId=111, nextOpStructureId=123 
> [pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
> 6. Step
> main
> locked pages = [1(r=1|w=0),11(r=1|w=0),111(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
> [pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
> 7. Step
> main
> locked pages = [1(r=1|w=0),111(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
> [pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
> L=2 <- Read unlock   nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> 8. Step
> main
> locked pages = [1(r=1|w=0)]
> L=1 -> Read lock     nextOpPageId=1, nextOpCacheId=123 
> [pageIdxHex=0000000000000001, partId=1, pageIdx=1, flags=00000000]
> L=2 -> Read lock     nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> L=3 -> Read lock     nextOpPageId=111, nextOpCacheId=123 
> [pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
> L=2 <- Read unlock   nextOpPageId=11, nextOpCacheId=123 
> [pageIdxHex=000000000000000b, partId=11, pageIdx=11, flags=00000000]
> L=1 <- Read unlock   nextOpPageId=111, nextOpCacheId=123 
> [pageIdxHex=000000000000006f, partId=111, pageIdx=111, flags=00000000]
> 9. Step
> main
> locked pages = []
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to