[ 
https://issues.apache.org/jira/browse/DERBY-3655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12634936#action_12634936
 ] 

Kathey Marsden commented on DERBY-3655:
---------------------------------------

Thanks Knut for fixing DERBY-3883. It looks like a good fix albeit not related 
to this issue. I still see the failure with your patch and this is what I think 
is going on.

What I see with IBM 1.6 is that by the time we get to rollback() the Lob 
references have already been removed from the WeakHashMap 
EmbedConnection.lobReferences  but have not yet been garbage collected.  I 
think it is ok for WeakHashMap to do this.  The javadoc says.
The behavior of the WeakHashMap class depends in part upon the actions of the 
garbage collector, so several familiar (though not required) Map invariants do 
not hold for this class. Because the garbage collector may discard keys at any 
time, a WeakHashMap may behave as though an unknown thread is silently removing 
entries. 

Changing the WeakHashMap to a HashMap corrects this problem, ensuring that when 
we get to rollback() the entries will still be there, but I am sure there must 
be a good reason for using a WeakHashMap in this case.  Does anyone know why we 
use WeakHashMap  instead of HashMap, when it seems ultimately we will get to 
the end of the transaction and clear these entries?






> errror in nightly regression test: 
> LobStreamsTest:encryptedjunit.framework.AssertionFailedError: 
> f:\jartest\JarResults.2008-04-29\ibm16_suites.All\system\singleUse\oneuse1e\tmp\lob6165.tmp
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3655
>                 URL: https://issues.apache.org/jira/browse/DERBY-3655
>             Project: Derby
>          Issue Type: Bug
>          Components: Regression Test Failure
>    Affects Versions: 10.3.3.0, 10.4.2.0
>         Environment: OS: Windows, Test: v10_4 branch insane jars, ibm16 jvm
> OS: Windows, Test: v10_3 branch insane jars, ibm142 jvm
>            Reporter: Mike Matrigali
>
> There was 1 failure:
> 1) LobStreamsTest:encryptedjunit.framework.AssertionFailedError: 
> f:\jartest\JarResults.2008-04-29\ibm16_suites.All\system\singleUse\oneuse1e\tmp\lob6165.tmp
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.removeDir(DropDatabaseSetup.java:130)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.removeDir(DropDatabaseSetup.java:128)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.access$000(DropDatabaseSetup.java:35)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup$1.run(DropDatabaseSetup.java:105)
>       at 
> java.security.AccessController.doPrivileged(AccessController.java:202)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.removeDirectory(DropDatabaseSetup.java:102)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.removeDirectory(DropDatabaseSetup.java:98)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.removeDatabase(DropDatabaseSetup.java:91)
>       at 
> org.apache.derbyTesting.junit.DropDatabaseSetup.tearDown(DropDatabaseSetup.java:77)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:20)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)

-- 
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