docs: public PersistenceBrokerInternal createPersistenceBroker(PBKey pbKey) throws PBFactoryException
      {
          if (log.isDebugEnabled()) log.debug("Obtain broker from pool, used PBKey is " + pbKey);
          PersistenceBrokerInternal broker = null;
  
          /*
          try to find a valid PBKey, if given key does not full match
          */
          pbKey = BrokerHelper.crossCheckPBKey(pbKey);
  
          try
          {
              /*
              get a pooled PB instance, the pool is reponsible to create new
              PB instances if not found in pool
              */
              broker = ((PersistenceBrokerInternal) brokerPool.borrowObject(pbKey));
              /*
              now warp pooled PB instance with a handle to avoid PB corruption
              of closed PB instances.
              */
              broker = wrapRequestedBrokerInstance(broker);
  
          }
          catch (Exception e)
          {
              try
              {
                  // if something going wrong, tryto close broker
                  if(broker != null) broker.close();
              }
              catch (Exception ignore)
              {
                  //ignore it
              }
              throw new PBFactoryException("Borrow broker from pool failed, using PBKey " + pbKey, e);
          }
          return broker;
      }