[
http://jira.codehaus.org/browse/SUREFIRE-453?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Fabulich closed SUREFIRE-453.
---------------------------------
Resolution: Won't Fix
The problem with this test has to do with the useSystemClassLoader
configuration parameter. When I use Surefire 2.4.1 and
-Dsurefire.useSystemClassLoader=false, the test passes; with =true (the
default), the test fails.
One of the changes from Surefire 2.3 and Surefire 2.4 was to make
useSystemClassLoader=true the default; previously the default was false.
"useSystemClassLoader" sounds fancy, but it's really just the normal default
way of launching java: your classes and dependencies are added to the classpath
in an ordinary way.
When we don't use the system classloader, we do fancy stuff with "isolated"
custom classloaders; this frequently had a destabilizing effect on the classes
as they attempted to access the system classloader using
java.lang.ClassLoader.getSystemClassLoader(). There are a bunch of bugs marked
"Won't Fix" for 2.3 because the workaround is just to set
useSystemClassLoader=true.
Since the system classloader mechanism is the "normal" way of launching code,
we have to wonder: why does this test fail when launched in the "ordinary" way,
but pass when launched in a special isolated classloader? I have no idea why,
and I think it's beyond me to find out. There's more than a dozen dependencies
in this project and a lot of tricky interactions possible between spring,
hibernate, derby, and aspectj; to figure out what's wrong would require a way
more detailed debugging effort than I'm prepared to do right now.
For now, I'm going to have to mark this "Won't Fix", there's a reasonable
workaround available (useSystemClassLoader=false) and because I believe the
current default behavior is the right choice (the default can't satisfy
everyone).
If there's something else we can do besides changing the default setting, I'd
be curious to know of it; in that case, feel free to reopen this bug or file a
new one.
> unable to run spring/jpa/dao test with derby starting with surefire 2.4.x
> -------------------------------------------------------------------------
>
> Key: SUREFIRE-453
> URL: http://jira.codehaus.org/browse/SUREFIRE-453
> Project: Maven Surefire
> Issue Type: Bug
> Components: plugin
> Affects Versions: 2.4
> Reporter: Dan Tran
> Attachments: mytest-sources-2.jar, mytest-sources.jar
>
>
> here is the description reported on user list
> This may not be a blocking bug but It is a regresion since 2.4 where
> my Spring JpaDao with embedded Derby test fails . Other databases are fine.
> The exception is producable with 2.5-SNAPSHOT ( build from source ),
> 2.4.1-SNAPSHOT( at apache snapshot repo).
> surefire 2.3 and 2.3.1 are fine.
> Any one else encounter this issue?
> -D
> -------------------------------------------------------------------------------
> Test set: com.iplocks.user.dao.UserDaoJpaTest
> -------------------------------------------------------------------------------
> Tests run: 7, Failures: 0, Errors: 6, Skipped: 0, Time elapsed: 14.111
> sec <<< FAILURE!
> testNamedConstraint(com.iplocks.user.dao.UserDaoJpaTest) Time
> elapsed: 0.281 sec <<< ERROR!
> javax.persistence.PersistenceException:
> org.hibernate.exception.GenericJDBCException: could not execute query
> at
> org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
> at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:75)
> at
> com.iplocks.jpa.GenericNameDaoJpa.getByName(GenericNameDaoJpa.java:54)
> at
> com.iplocks.user.dao.UserDaoJpaTest.createUser(UserDaoJpaTest.java:35)
> at
> com.iplocks.user.dao.UserDaoJpaTest.createDefaultUser(UserDaoJpaTest.java:56)
> at
> com.iplocks.user.dao.UserDaoJpaTest.testNamedConstraint(UserDaoJpaTest.java:77)
> Caused by: org.hibernate.exception.GenericJDBCException: could not execute
> query
> at
> org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
> at
> org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
> at
> org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> at org.hibernate.loader.Loader.doList(Loader.java:2223)
> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
> at org.hibernate.loader.Loader.list(Loader.java:2099)
> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
> at
> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
> at
> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
> at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66)
> ... 38 more
> Caused by: java.sql.SQLException: Cannot create an instance of
> generated class
> org.apache.derby.exe.ac12564092x0117xc31cx8752x00000020b5f01.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
> Please run mvn test using the attached maven project. to run with different
> db, change resources.properties accordingly
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira