public inbox for [email protected]  
help / color / mirror / Atom feed
From: Andy Fan <[email protected]>
To: [email protected]
Subject: Duplicate Proxy.newProxyInstance calls during PGXAConnection.getConnection?
Date: Sun, 26 Mar 2023 15:16:59 +0800
Message-ID: <CAKU4AWog5YvO7wOBQ7nyGhV5JAm2s9sLoANGJMuG6BjJbDPAKA@mail.gmail.com> (raw)

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?

[1]
https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/xa/PGXAConnection.j...


-- 
Best Regards
Andy Fan


view thread (2+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Duplicate Proxy.newProxyInstance calls during PGXAConnection.getConnection?
  In-Reply-To: <CAKU4AWog5YvO7wOBQ7nyGhV5JAm2s9sLoANGJMuG6BjJbDPAKA@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox