Grokbase Groups Cayenne dev May 2006
FAQ
As far as I can tell JdbcPkGenerator.autoPkTableExists() is flaky
w/MSAccess.

This is a problem when I try to run the JUnit tests as it leads to
exceptions when JdbcPkGenerator.createAutoPk() tries to create the
AUTO_PK_SUPPORT table when the table already exists.

It is almost as if the md.getTables(null, null, "AUTO_PK_SUPPORT", null)
returns stale information.

Any bright insights?


--
Øyvind Harboe
http://www.zylin.com

Search Discussions

  • Tore Halset at May 23, 2006 at 4:01 pm

    On May 23, 2006, at 10:34, Øyvind Harboe wrote:

    As far as I can tell JdbcPkGenerator.autoPkTableExists() is flaky
    w/MSAccess.

    This is a problem when I try to run the JUnit tests as it leads to
    exceptions when JdbcPkGenerator.createAutoPk() tries to create the
    AUTO_PK_SUPPORT table when the table already exists.

    It is almost as if the md.getTables(null, null, "AUTO_PK_SUPPORT",
    null)
    returns stale information.
    If getTables() does not work, perhaps you could issue a "select *
    from AUTO_PK_SUPPORT" in your own PkGenerator and look for
    SQLExceptions?

    - Tore.
  • Øyvind Harboe at May 24, 2006 at 6:13 am

    On Tue, 2006-05-23 at 18:00 +0200, Tore Halset wrote:
    On May 23, 2006, at 10:34, Øyvind Harboe wrote:

    As far as I can tell JdbcPkGenerator.autoPkTableExists() is flaky
    w/MSAccess.

    This is a problem when I try to run the JUnit tests as it leads to
    exceptions when JdbcPkGenerator.createAutoPk() tries to create the
    AUTO_PK_SUPPORT table when the table already exists.

    It is almost as if the md.getTables(null, null, "AUTO_PK_SUPPORT",
    null)
    returns stale information.
    If getTables() does not work, perhaps you could issue a "select *
    from AUTO_PK_SUPPORT" in your own PkGenerator and look for
    SQLExceptions?
    Good suggestion. I tried it and got closer to the core of the
    problem.

    It appears that it takes a couple of seconds from a table is created
    until it is possible to reliably check for the existence of
    AUTO_PK_SUPPORT. My data is weak, but I have not yet observed
    the problem if I add a 3000ms pause before I check for the presence of
    AUTO_PK_SUPPORT.

    A wild guess:

    Could it be that I'm getting bitten by connection pooling?
    One connection is used to create the table, another(stale) is used to
    check for the presence of AUTO_PK_SUPPORT.


    --
    Øyvind Harboe
    http://www.zylin.com
  • Kevin Menard at May 24, 2006 at 12:39 pm

    On Wed, 24 May 2006 02:13:13 -0400, Øyvind Harboe wrote:


    Could it be that I'm getting bitten by connection pooling?
    One connection is used to create the table, another(stale) is used to
    check for the presence of AUTO_PK_SUPPORT.
    Sorry if this might be asking the obvious, but do you have the problem
    with a connection pool of size 1?

    --
    Kevin
  • Øyvind Harboe at May 24, 2006 at 3:34 pm

    On Wed, 2006-05-24 at 08:38 -0400, Kevin Menard wrote:
    On Wed, 24 May 2006 02:13:13 -0400, Øyvind Harboe
    wrote:

    Could it be that I'm getting bitten by connection pooling?
    One connection is used to create the table, another(stale) is used to
    check for the presence of AUTO_PK_SUPPORT.
    Sorry if this might be asking the obvious, but do you have the problem
    with a connection pool of size 1?
    Yes, same result. I set a breakpoint in PoolManager (init +
    setMaxConnections) and verified that minConnections and maxConnections
    both were 1.


    --
    Øyvind Harboe
    http://www.zylin.com
  • Øyvind Harboe at May 24, 2006 at 12:35 pm

    On Tue, 2006-05-23 at 18:00 +0200, Tore Halset wrote:
    On May 23, 2006, at 10:34, Øyvind Harboe wrote:

    As far as I can tell JdbcPkGenerator.autoPkTableExists() is flaky
    w/MSAccess.

    This is a problem when I try to run the JUnit tests as it leads to
    exceptions when JdbcPkGenerator.createAutoPk() tries to create the
    AUTO_PK_SUPPORT table when the table already exists.

    It is almost as if the md.getTables(null, null, "AUTO_PK_SUPPORT",
    null)
    returns stale information.
    If getTables() does not work, perhaps you could issue a "select *
    from AUTO_PK_SUPPORT" in your own PkGenerator and look for
    SQLExceptions?
    I've had the chance to do some more testing and as long as I add
    a 3 second pause before I run autoPkTableExists(), then the current
    JdbcPkGenerator implementation of autoPkTableExists() runs fine.

    protected boolean autoPkTableExists(DataNode node) throws SQLException {
    /* FIX!!!!! why is a 3 second pause necessary here???? */
    try
    {
    Thread.sleep(3000);
    }
    catch (InterruptedException e1) {
    e1.printStackTrace();
    }
    return super.autoPkTableExists(node);
    }

    --
    Øyvind Harboe
    http://www.zylin.com

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupdev @
categoriescayenne
postedMay 23, '06 at 8:35a
activeMay 24, '06 at 3:34p
posts6
users3
websitecayenne.apache.org

People

Translate

site design / logo © 2022 Grokbase