class_docstr: MLMDConnectionManager manages the connections to MLMD.
  
  It can connect to multiple MLMD databases.
  For each MLMD database it connects, only one connection/channel will be
  created. The connections/channels can be distinguished by the "identifier" of
  the connection config.
  
  The connection sharing begins from the time the manager instance __enter__ and
  ends on the __exit__. Manager can __enter__ multiple times; in such case the
  outermost __enter__ and __exit__ pair matters.
docstr: Constructor of MLMDConnectionManager.
  
  Args:
    primary_connection_config: Config of the primary mlmd handle.
docstr_tok: ["Constructor","of","MLMDConnectionManager",".","Args",":","primary_connection_config",":","Config","of","the","primary","mlmd","handle","."]
code: def __init__(
      self, primary_connection_config: metadata.ConnectionConfigType
  ):
      """Constructor of MLMDConnectionManager.
  
      Args:
        primary_connection_config: Config of the primary mlmd handle.
      """
      self._primary_connection_config = primary_connection_config
      self._exit_stack = contextlib.ExitStack()
      self._mlmd_handle_by_config_id = {}
      self._enter_count = 0
  
file_path: tfx/tfx/orchestration/mlmd_connection_manager.py
imports: import contextlib
  import types
  from typing import Optional, Type, Union, cast
  from tfx.orchestration import metadata
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 4 to create a new MLMDConnectionManager object  with example: obj = MLMDConnectionManager(primary_connection_config)