File tree Expand file tree Collapse file tree 1 file changed +15
-6
lines changed 
src/relstorage/adapters/postgresql/drivers Expand file tree Collapse file tree 1 file changed +15
-6
lines changed Original file line number Diff line number Diff line change 1515""" 
1616pg8000 IDBDriver implementations. 
1717""" 
18- 
19- from  __future__ import  absolute_import 
20- from  __future__ import  print_function 
21- 
2218from  collections  import  deque 
2319
2420from  zope .interface  import  implementer 
2521
2622from  relstorage ._compat  import  number_types 
2723
24+ from  ...._compat  import  WIN 
2825from  ...interfaces  import  IDBDriver 
2926from  ...sql  import  Compiler 
30- 
3127from  . import  AbstractPostgreSQLDriver 
3228from  . import  PostgreSQLDialect 
3329from  ._lobject  import  LobConnectionMixin 
3430
35- 
3631__all__  =  [
3732    'PG8000Driver' ,
3833]
@@ -249,3 +244,17 @@ def connection_may_need_commit(self, conn):
249244
250245    def  _get_exception_pgcode (self , exc ):
251246        return  exc .args [0 ]['C' ]
247+ 
248+     if  WIN :
249+         def  exception_is_deadlock (self , exc ):
250+             is_deadlock  =  super ().exception_is_deadlock (exc )
251+             if  is_deadlock :
252+                 return  is_deadlock 
253+             # pg8000 raises pg8000.dbapi.ProgrammingError, which is a DatabaseError. 
254+             # We've seen both 
255+             #    40P01 - deadlock_detected (Transaction Rollback) 
256+             #    55P03 - lock_not_available (Object Not In Prerequisite State) 
257+             # ERRCODE_DEADLOCK is the first one, checked by super. 
258+             if  isinstance (exc , self .driver_module .DatabaseError ):
259+                 return  self ._get_exception_pgcode (exc ) ==  '55P03' 
260+             return  None 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments