@@ -626,11 +626,9 @@ def _cache_database_configurations():
626626 """
627627 global _cached_db_configs , _cache_initialized
628628
629- # Fast path: if already initialized, return immediately
630629 if _cache_initialized :
631630 return
632631
633- # Slow path: acquire lock and check again (double-checked locking)
634632 with _cache_lock :
635633 if _cache_initialized :
636634 return
@@ -644,23 +642,24 @@ def _cache_database_configurations():
644642 continue
645643
646644 with capture_internal_exceptions ():
645+ try :
646+ db_wrapper = connections [alias ]
647+ except (KeyError , Exception ):
648+ db_wrapper = None
649+
647650 _cached_db_configs [alias ] = {
648651 "db_name" : db_config .get ("NAME" ),
649652 "host" : db_config .get ("HOST" , "localhost" ),
650653 "port" : db_config .get ("PORT" ),
651654 "unix_socket" : db_config .get ("OPTIONS" , {}).get ("unix_socket" ),
652655 "engine" : db_config .get ("ENGINE" ),
656+ "vendor" : (
657+ db_wrapper .vendor
658+ if db_wrapper and hasattr (db_wrapper , "vendor" )
659+ else None
660+ ),
653661 }
654662
655- try :
656- db_wrapper = connections [alias ]
657- except (KeyError , Exception ):
658- continue
659-
660- if hasattr (db_wrapper , "vendor" ):
661- _cached_db_configs [alias ]["vendor" ] = db_wrapper .vendor
662-
663- # Mark as initialized only after successful completion
664663 _cache_initialized = True
665664
666665 except Exception as e :
@@ -772,22 +771,22 @@ def _set_db_data(span, cursor_or_db):
772771 # Use pre-cached configuration
773772 cached_config = _cached_db_configs .get (db_alias ) if db_alias else None
774773 if cached_config :
775- if cached_config [ "db_name" ] :
774+ if cached_config . get ( "db_name" ) :
776775 span .set_data (SPANDATA .DB_NAME , cached_config ["db_name" ])
777- if cached_config [ "host" ] :
776+ if cached_config . get ( "host" ) :
778777 span .set_data (SPANDATA .SERVER_ADDRESS , cached_config ["host" ])
779- if cached_config [ "port" ] :
778+ if cached_config . get ( "port" ) :
780779 span .set_data (SPANDATA .SERVER_PORT , str (cached_config ["port" ]))
781- if cached_config [ "unix_socket" ] :
780+ if cached_config . get ( "unix_socket" ) :
782781 span .set_data (SPANDATA .SERVER_SOCKET_ADDRESS , cached_config ["unix_socket" ])
783782 return # Success - exit early
784783
785784 # Fallback to dynamic database metadata collection.
786785 # This is the edge case where db configuration is not in Django's `DATABASES` setting.
787786 try :
788- # Method 1: Try db.get_connection_params() first (NO CONNECTION ACCESS)
787+ # Fallback 1: Try db.get_connection_params() first (NO CONNECTION ACCESS)
789788 logger .debug (
790- "Cached db connection config retrieval failed for %s. Trying db.get_connection_params()." ,
789+ "Cached db connection params retrieval failed for %s. Trying db.get_connection_params()." ,
791790 db_alias ,
792791 )
793792 try :
@@ -796,24 +795,24 @@ def _set_db_data(span, cursor_or_db):
796795 db_name = connection_params .get ("dbname" ) or connection_params .get (
797796 "database"
798797 )
799- if db_name is not None :
798+ if db_name :
800799 span .set_data (SPANDATA .DB_NAME , db_name )
801800
802801 host = connection_params .get ("host" )
803- if host is not None :
802+ if host :
804803 span .set_data (SPANDATA .SERVER_ADDRESS , host )
805804
806805 port = connection_params .get ("port" )
807- if port is not None :
806+ if port :
808807 span .set_data (SPANDATA .SERVER_PORT , str (port ))
809808
810809 unix_socket = connection_params .get ("unix_socket" )
811- if unix_socket is not None :
810+ if unix_socket :
812811 span .set_data (SPANDATA .SERVER_SOCKET_ADDRESS , unix_socket )
813812 return # Success - exit early to avoid connection access
814813
815814 except (KeyError , ImproperlyConfigured , AttributeError ):
816- # Method 2: Last resort - direct connection access (CONNECTION POOL RISK)
815+ # Fallback 2: Last resort - direct connection access (CONNECTION POOL RISK)
817816 logger .debug (
818817 "db.get_connection_params() failed for %s, trying direct connection access" ,
819818 db_alias ,
@@ -848,19 +847,19 @@ def _set_db_data(span, cursor_or_db):
848847 db_name = connection_params .get ("dbname" ) or connection_params .get (
849848 "database"
850849 )
851- if db_name is not None :
850+ if db_name :
852851 span .set_data (SPANDATA .DB_NAME , db_name )
853852
854853 host = connection_params .get ("host" )
855- if host is not None :
854+ if host :
856855 span .set_data (SPANDATA .SERVER_ADDRESS , host )
857856
858857 port = connection_params .get ("port" )
859- if port is not None :
858+ if port :
860859 span .set_data (SPANDATA .SERVER_PORT , str (port ))
861860
862861 unix_socket = connection_params .get ("unix_socket" )
863- if unix_socket is not None :
862+ if unix_socket :
864863 span .set_data (SPANDATA .SERVER_SOCKET_ADDRESS , unix_socket )
865864
866865 except Exception as e :
0 commit comments