Обсуждение: Duplicate Proxy.newProxyInstance calls during PGXAConnection.getConnection?

Поиск
Список
Период
Сортировка

Duplicate Proxy.newProxyInstance calls during PGXAConnection.getConnection?

От
Andy Fan
Дата:
In the PGXAConnection.GetConnection() [1], we can see the below code:

  @Override  public Connection getConnection() throws SQLException {
    // the first time ConnectionHandler has been created.    Connection conn = super.getConnection();   
    // When we're outside an XA transaction, autocommit    // is supposed to be true, per usual JDBC convention.    // When an XA transaction is in progress, it should be    // false.    if (state == State.IDLE) {      conn.setAutoCommit(true);    }
    /*     * Wrap the connection in a proxy to forbid application from fiddling with transaction state     * directly during an XA transaction     */
    // ConnectionHandler is created again here.     ConnectionHandler handler = new ConnectionHandler(conn);    return (Connection) Proxy.newProxyInstance(getClass().getClassLoader(),        new Class[]{Connection.class, PGConnection.class}, handler);  }

However I think the proxy has already been created at the first line: super.getConnection(), 
and then it is created later.  Is it a duplication? 

Re: Duplicate Proxy.newProxyInstance calls during PGXAConnection.getConnection?

От
Andy Fan
Дата:
Please forgive me, I was totally wrong here.  Sorry for the noise. 

On Sun, Mar 26, 2023 at 3:16 PM Andy Fan <zhihui.fan1213@gmail.com> wrote:
In the PGXAConnection.GetConnection() [1], we can see the below code:

  @Override  public Connection getConnection() throws SQLException {
    // the first time ConnectionHandler has been created.    Connection conn = super.getConnection();   
    // When we're outside an XA transaction, autocommit    // is supposed to be true, per usual JDBC convention.    // When an XA transaction is in progress, it should be    // false.    if (state == State.IDLE) {      conn.setAutoCommit(true);    }
    /*     * Wrap the connection in a proxy to forbid application from fiddling with transaction state     * directly during an XA transaction     */
    // ConnectionHandler is created again here.     ConnectionHandler handler = new ConnectionHandler(conn);    return (Connection) Proxy.newProxyInstance(getClass().getClassLoader(),        new Class[]{Connection.class, PGConnection.class}, handler);  }

However I think the proxy has already been created at the first line: super.getConnection(), 
and then it is created later.  Is it a duplication? 



--
Best Regards
Andy Fan