[ 
https://issues.apache.org/jira/browse/OPENJPA-1336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12762003#action_12762003
 ] 

Milosz Tylenda commented on OPENJPA-1336:
-----------------------------------------

Rick, good job figuring that out.

My concern is that relying on the default encoding would make the UUID 
behaviour inconsistent across environments. I think that the default encoding 
is now something like "Windows-1252" on (English/USA) Windows and "UTF-8" on 
most Linuxes and can be further changed by users. So an OpenJPA application may 
stop working when switched its environment and finding the cause can be 
difficult.

I would rather use a constant encoding ("ISO-8859-1" or any other but supported 
by every JVM - there is a list in Javadoc) in the UUID generator. Would change 
or narrow the range of generated byte values if required.

Another factor is the encoding of the database. If we start sending strings 
containing "UTF-8" characters to a database which uses only one-byte encoding 
(quite common), another error might occur. That suggests me using "ISO-8859-1" 
as "the lowest common denominator" in the generator is a good idea.

A user manual update might be reasonable after resolving this.

Maybe I am missing something?


> Intermittent test failure in 
> org.apache.openjpa.persistence.generationtype.TestGeneratedValues when 
> running on MySQL
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1336
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1336
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: lib
>            Reporter: Rick Curtis
>         Attachments: OPENJPA-1336.test.patch
>
>
> As reported in OPENJPA-1168:
> Milosz Tylenda added a comment - 09/Jul/09 09:17 AM
> This reminds me of a test case which sometimes fails for me while running 
> against MySQL and which I did not have time to look at. Maybe this is 
> connected although the test case is single-threaded. The stack trace I am 
> receiving is:
> testDefaultValues(org.apache.openjpa.persistence.generationtype.TestGeneratedValues)
>  Time elapsed: 0.787 sec <<< FAILURE!
> junit.framework.AssertionFailedError
>         at junit.framework.Assert.fail(Assert.java:47)
>         at junit.framework.Assert.assertTrue(Assert.java:20)
>         at junit.framework.Assert.assertFalse(Assert.java:34)
>         at junit.framework.Assert.assertFalse(Assert.java:41)
>         at 
> org.apache.openjpa.persistence.generationtype.TestGeneratedValues.testDefaultValues(TestGeneratedValues.java:49)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at junit.framework.TestCase.runTest(TestCase.java:154)
>         at junit.framework.TestCase.runBare(TestCase.java:127)
>         at 
> org.apache.openjpa.persistence.test.PersistenceTestCase.runBare(PersistenceTestCase.java:466)
>         at junit.framework.TestResult$1.protect(TestResult.java:106)
>         at junit.framework.TestResult.runProtected(TestResult.java:124)
>         at junit.framework.TestResult.run(TestResult.java:109)
>         at junit.framework.TestCase.run(TestCase.java:118)
>         at 
> org.apache.openjpa.persistence.test.PersistenceTestCase.run(PersistenceTestCase.java:181)
>         at junit.framework.TestSuite.runTest(TestSuite.java:208)
>         at junit.framework.TestSuite.run(TestSuite.java:203)
>         at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at 
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
>         at 
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
>         at 
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
>         at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at 
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
>         at 
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
> The TestGeneratedValues.java:49 contains:
>         assertFalse(gv.getUuidstring().equals(gv2.getUuidstring()));
> This means UUID generator sometimes generates duplicates. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to