Package org.h2.util

Class AbbaDetector


  • public class AbbaDetector
    extends java.lang.Object
    Utility to detect AB-BA deadlocks.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.Set<java.lang.String> KNOWN_DEADLOCKS  
      private static java.util.Map<java.lang.Object,​java.util.Map<java.lang.Object,​java.lang.Exception>> LOCK_ORDERING
      Map of (object A) -> ( map of (object locked before object A) -> (stack trace where locked) )
      private static java.lang.ThreadLocal<java.util.Deque<java.lang.Object>> STACK  
      private static boolean TRACE  
    • Constructor Summary

      Constructors 
      Constructor Description
      AbbaDetector()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.Object begin​(java.lang.Object o)
      This method is called just before or just after an object is synchronized.
      private static java.lang.String getObjectName​(java.lang.Object o)  
      private static java.lang.Object getTest​(java.lang.Object o)  
      private static void markHigher​(java.lang.Object o, java.util.Deque<java.lang.Object> older)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • STACK

        private static final java.lang.ThreadLocal<java.util.Deque<java.lang.Object>> STACK
      • LOCK_ORDERING

        private static final java.util.Map<java.lang.Object,​java.util.Map<java.lang.Object,​java.lang.Exception>> LOCK_ORDERING
        Map of (object A) -> ( map of (object locked before object A) -> (stack trace where locked) )
      • KNOWN_DEADLOCKS

        private static final java.util.Set<java.lang.String> KNOWN_DEADLOCKS
    • Constructor Detail

      • AbbaDetector

        public AbbaDetector()
    • Method Detail

      • begin

        public static java.lang.Object begin​(java.lang.Object o)
        This method is called just before or just after an object is synchronized.
        Parameters:
        o - the object, or null for the current class
        Returns:
        the object that was passed
      • getTest

        private static java.lang.Object getTest​(java.lang.Object o)
      • getObjectName

        private static java.lang.String getObjectName​(java.lang.Object o)
      • markHigher

        private static void markHigher​(java.lang.Object o,
                                       java.util.Deque<java.lang.Object> older)