<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to bugs</title><link href="https://sourceforge.net/p/cuba/bugs/" rel="alternate"/><link href="https://sourceforge.net/p/cuba/bugs/feed.atom" rel="self"/><id>https://sourceforge.net/p/cuba/bugs/</id><updated>2008-08-13T09:57:23Z</updated><subtitle>Recent changes to bugs</subtitle><entry><title>Multiple instantiation of WiredContainer</title><link href="https://sourceforge.net/p/cuba/bugs/43/" rel="alternate"/><published>2008-08-13T09:57:23Z</published><updated>2008-08-13T09:57:23Z</updated><author><name>Matthias Bartels</name><uri>https://sourceforge.net/u/mbartels/</uri></author><id>https://sourceforge.net3f05570db1b3ae6554baf971623194f6e9b2dcf5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;the WiredContainer can be instantiated multiple times in a webservice environment with many parallel threads.&lt;br /&gt;
This is due to two code-blocks which are not synchronized.&lt;/p&gt;
&lt;p&gt;1.) WSAdapter - this class holds a static member for a WiredClientContext. But the initialisation of this variable is not synchronized.&lt;/p&gt;
&lt;p&gt;2.) WiredClientContext - this class holds a static member "defaultContainer", which is a WiredContainer. The creation of this WiredContainer is also not synchronized&lt;/p&gt;
&lt;p&gt;If more than one Thread executes these code-blocks at a time, the WiredContainer can be created more than once.&lt;/p&gt;
&lt;p&gt;This behaviour would be no problem if a thread used the same WiredContainer for the whole call chain, e.g. from entry into the WiredContainer till exit of the container. But due to currently unknown reasons the Thread switches its WiredContainer during the execution of the call chain. This causes some severe problems. The WiredContainer holds the AllocationManager (that means resource and transaction management) in a ThreadLocal. If a Thread switches its container the AllocationManager is not available for the Thread. &lt;/p&gt;
&lt;p&gt;The consequence of this behaviour is that SQL-Statements can run outside of a transaction-scope although a TX-attribute is specified.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Missing implementation link no longer supported?</title><link href="https://sourceforge.net/p/cuba/bugs/42/" rel="alternate"/><published>2008-07-09T11:47:05Z</published><updated>2008-07-09T11:47:05Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net9dd603b4e383944ff80f95c54420770e898f3b47</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;In older CUBA releases it was allowed to define components classes and component interfaces separately without an implementation reference between class and interface. Allthough it is not recommended at all, it is a kind of fea´ture which was adopted from EJB 2. With version 3 of CUBA it seems that this is not allowed any more. If I do so, I get a class cast exception at runtime.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Endless loop in garbage collection</title><link href="https://sourceforge.net/p/cuba/bugs/41/" rel="alternate"/><published>2008-05-30T12:33:59Z</published><updated>2008-05-30T12:33:59Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net0317827032891de2c7836534637699f6289f8607</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Cyclic dependencies of components with predestroyer methods may case an endless loop during garbage collection. The problem ist that the predestroyer causes a complete initialization of the adapter which is of no use for a formerly unused adapter which is simply destroyed by its finalizer.&lt;/p&gt;
&lt;p&gt;I'd suggest a bugfix like this. In AbstractComponentAdapter add the following function:&lt;/p&gt;
&lt;p&gt;protected void invokeLifecycleWeak(Method coreMethod, AroundInvocation commonInterceptors) {&lt;br /&gt;
if (core != null)&lt;br /&gt;
invokeLifecycle(coreMethod, commonInterceptors);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;In AbstractAdapterGenerator.generateLifecycleCall use this function for predestroy:&lt;/p&gt;
&lt;p&gt;if (callType.equals(Interception.PRE_DESTROY))&lt;br /&gt;
adapter.print("invokeLifecycleWeak(");&lt;br /&gt;
else&lt;br /&gt;
adapter.print("invokeLifecycle(");&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>JPA always required</title><link href="https://sourceforge.net/p/cuba/bugs/40/" rel="alternate"/><published>2008-05-07T15:10:51Z</published><updated>2008-05-07T15:10:51Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net6f49f6bcc79dea24d50e3936f785b2b42a6b5606</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;CUBA requires a JPA library even if JPA is not used in a project. It would be better if CUBA would contain the JPA interfaces itself just like the JTA interfaces which are also included.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Missinterpretation of * character in CMT</title><link href="https://sourceforge.net/p/cuba/bugs/39/" rel="alternate"/><published>2008-04-05T11:23:05Z</published><updated>2008-04-05T11:23:05Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net4e79f2c5a4ddcd248accdfb9174f6cecc8ed140f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;When associating CMT attributes to methods on a wildcard basis, the * character is supposed to represent 0 or more arbitrary characters. The embedded container interprets it as 1 or more characters. I.e. a specification like "create*" does not cover methods of name "create(...)".&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AbstractEJBClientContext ignores exception messages</title><link href="https://sourceforge.net/p/cuba/bugs/38/" rel="alternate"/><published>2008-03-24T09:59:57Z</published><updated>2008-03-24T09:59:57Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net7664419c080445af7bead53672956e495aa70705</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;getJNDIContext() catches NamingExceptions and throws a new ReferenceException. The ReferenceException ignores the message of the NamingException, so bug finding will be more complicated.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Connect retry</title><link href="https://sourceforge.net/p/cuba/bugs/37/" rel="alternate"/><published>2008-03-20T17:08:52Z</published><updated>2008-03-20T17:08:52Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.netac0d9033c3ccb413e06c812db6ef097af2a610a8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;When trying to fetch a connection from the connection pool of the embedded container, the appropriate allocation class immediately gives up if the pool is currently empty. It were better to retry it several times before giving up and report an exception.&lt;/p&gt;
&lt;p&gt;Here is the modified code of class AllocatedResource which does retries 10 retries over a period of 1 second. Of course it would be nicer when these values could be configured per data source in wired-application.xml. But its a start :-)&lt;/p&gt;
&lt;p&gt;class AllocatedResources {&lt;br /&gt;
public static final int NUM_RETRIES = 10;&lt;br /&gt;
public static final long RETRY_DELAY = 100L; //100ms&lt;/p&gt;
&lt;p&gt;//... identical code removed&lt;br /&gt;
public WiredManagedConnection allocateResource(ResourceFactoryI factory)&lt;br /&gt;
throws SQLException {&lt;br /&gt;
assertFactoryType(factory);&lt;br /&gt;
WiredManagedConnection con = (WiredManagedConnection) resources.get(factory);&lt;br /&gt;
if (con == null) {&lt;br /&gt;
for (int retry = 0; true; retry++) {&lt;br /&gt;
try {&lt;br /&gt;
con = ((WiredDataSource) factory).nextConnection();&lt;br /&gt;
resources.put(factory, con);&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
catch (SQLException sqlx) {&lt;br /&gt;
if (retry &amp;gt; NUM_RETRIES || !(factory instanceof WiredPooledDataSource)) {&lt;br /&gt;
throw sqlx;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
try {&lt;br /&gt;
Thread.sleep(RETRY_DELAY);&lt;br /&gt;
} catch (InterruptedException e) { /* ignore */ }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
return con;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;//... identical code removed&lt;br /&gt;
}&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>same methods in internal and external interface</title><link href="https://sourceforge.net/p/cuba/bugs/36/" rel="alternate"/><published>2008-03-18T10:41:19Z</published><updated>2008-03-18T10:41:19Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net2ef6438417b81e13677eeb54abca5fffd4f26f79</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;If an impl has both an external and an internal interface  with the same methods, the adapter generator creates both methods on the generated file. This will lead to an compiler error.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Environment entries are not derived</title><link href="https://sourceforge.net/p/cuba/bugs/35/" rel="alternate"/><published>2008-02-15T16:36:15Z</published><updated>2008-02-15T16:36:15Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net6c18ab1eac28bab86fa38d06e82e037726537967</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Environment entries which are not bound to class members but just declared bei a @Resource or @Resources annotation at the class header are not inherited in derived component classes.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>EJB3 adapter contains hard-coded stuff</title><link href="https://sourceforge.net/p/cuba/bugs/34/" rel="alternate"/><published>2008-02-12T22:23:14Z</published><updated>2008-02-12T22:23:14Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net0dac5d9d5ee6d87bca4248688ef6c35050371dca</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;The class EJB3AdapterGenerator produces hard-coded type case "(cubatest.CubaImpl)" for environment injection. This must be changed to the actual declaring class.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>