Bugs item #529956, was opened at 2002-03-14 16:52
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=376685&aid=529956&group_id=22866

Category: JBossServer
Group: v2.4 (stable)
Status: Open
Resolution: None
Priority: 5
Submitted By: Kevin Holmes (kholmes)
Assigned to: Nobody/Anonymous (nobody)
Summary: BMP cache zombies

Initial Comment:
Windows200 server, Linux
JDK1.3.02

When using Commit 
Options B or C for BMP EJBs we find that "zombie" beans remain in the 
cache at the start of a new transaction when they have no underlying 
database record. So it is impossible to create a new bean with the 
same id as the zombie.

Finders other than the findByPrimaryKey 
as defined in the ejb-jar.xml all return the correct set of ejbs, but 
findByPrimaryKey still returns the zombie.

-------------------------
 int teamId = 
1001;
 executeSQL("insert into teams (id, namestr) values ("
            
+teamId+", 'team1001');");
 // ... get ejb remote home: teamRH
 
TeamRemoteIf teamRI = 
   teamRH.findByPrimaryKey(new 
Long(teamId));

 // get all the teams
 Collection 
teamsBeforeDelete =      
     teamRH.findIncludingArchived();
 
executeSQL("delete from teams where id = "+teamId);
 Collection 
teamsAfterDelete = 
     teamRH.findIncludingArchived();

 // 
this actually succeeds, so this finder is working
 // as we would 
expect for commit option B or C
 
assertTrue(teamsAfterDelete.size() == 
           
(teamsBeforeDelete.size() - 1) );

 // now try to find it again, 
shouldnt be able to
 try{
    teamRI = 
       
teamRH.findByPrimaryKey(new Long(teamId));
 } catch 
(FinderException e){
 // this is what we want to happen, but it 
doesnt !
 }
 
 // this fails, teamRI is undead !!
 
assertNull(teamRI);
------------------------------
 
from our ejb-jar.xml
------------------------------

<entity>
<ejb-name>TeamBean</ejb-name>
 
<home>com.inceptor.entity.TeamRemoteHomeIf</home>
 
<remote>com.inceptor.entity.TeamRemoteIf</remote>
 <local-
home>com.inceptor.entity.TeamLocalHomeIf   
 </local-home>
 
<local>com.inceptor.entity.TeamLocalIf</local>
 <ejb-
class>  
   com.mvcsoft.pm.generated.TeamBean1016109171312
 
</ejb-class>
 <persistence-type>Bean</persistence-type>
 
<prim-key-class>java.lang.Long</prim-key-class>
 
<reentrant>True</reentrant>
...
</entity>

<assembly-
descriptor>
...
<container-transaction>
<method>
<ejb-
name>TeamBean</ejb-name>
<method-name>*</method-
name>
</method>
<trans-attribute>Required</trans-
attribute>
</container-transaction>
...
</assembly-
descriptor>
  
and even though we're using MVC which doesnt 
require that commit option B or C be set in the container-
configuration we set it in the jboss.xml anyway by overiding the 
commit-option for "Standard BMP EntityBean" and the zombies still 
persist in the cache.

If we set the max-bean-age and overager-
periods down to 1 second and sleep in between deleting the 
zombiebean from sql and using findByPrimaryKey for the zombies 
key, then as we expect it throws a FinderException.

Is this 
still an issue in version 3 ??

regards,
 Kevin Holmes
 
inceptor.com

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=376685&aid=529956&group_id=22866

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to