<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/cuba/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/cuba/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Wed, 13 Aug 2008 09:57:23 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/cuba/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>Multiple instantiation of WiredContainer</title><link>https://sourceforge.net/p/cuba/bugs/43/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matthias Bartels</dc:creator><pubDate>Wed, 13 Aug 2008 09:57:23 -0000</pubDate><guid>https://sourceforge.net3f05570db1b3ae6554baf971623194f6e9b2dcf5</guid></item><item><title>Missing implementation link no longer supported?</title><link>https://sourceforge.net/p/cuba/bugs/42/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 09 Jul 2008 11:47:05 -0000</pubDate><guid>https://sourceforge.net9dd603b4e383944ff80f95c54420770e898f3b47</guid></item><item><title>Endless loop in garbage collection</title><link>https://sourceforge.net/p/cuba/bugs/41/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 30 May 2008 12:33:59 -0000</pubDate><guid>https://sourceforge.net0317827032891de2c7836534637699f6289f8607</guid></item><item><title>JPA always required</title><link>https://sourceforge.net/p/cuba/bugs/40/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 07 May 2008 15:10:51 -0000</pubDate><guid>https://sourceforge.net6f49f6bcc79dea24d50e3936f785b2b42a6b5606</guid></item><item><title>Missinterpretation of * character in CMT</title><link>https://sourceforge.net/p/cuba/bugs/39/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Sat, 05 Apr 2008 11:23:05 -0000</pubDate><guid>https://sourceforge.net4e79f2c5a4ddcd248accdfb9174f6cecc8ed140f</guid></item><item><title>AbstractEJBClientContext ignores exception messages</title><link>https://sourceforge.net/p/cuba/bugs/38/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Mon, 24 Mar 2008 09:59:57 -0000</pubDate><guid>https://sourceforge.net7664419c080445af7bead53672956e495aa70705</guid></item><item><title>Connect retry</title><link>https://sourceforge.net/p/cuba/bugs/37/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Thu, 20 Mar 2008 17:08:52 -0000</pubDate><guid>https://sourceforge.netac0d9033c3ccb413e06c812db6ef097af2a610a8</guid></item><item><title>same methods in internal and external interface</title><link>https://sourceforge.net/p/cuba/bugs/36/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Tue, 18 Mar 2008 10:41:19 -0000</pubDate><guid>https://sourceforge.net2ef6438417b81e13677eeb54abca5fffd4f26f79</guid></item><item><title>Environment entries are not derived</title><link>https://sourceforge.net/p/cuba/bugs/35/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 15 Feb 2008 16:36:15 -0000</pubDate><guid>https://sourceforge.net6c18ab1eac28bab86fa38d06e82e037726537967</guid></item><item><title>EJB3 adapter contains hard-coded stuff</title><link>https://sourceforge.net/p/cuba/bugs/34/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Tue, 12 Feb 2008 22:23:14 -0000</pubDate><guid>https://sourceforge.net0dac5d9d5ee6d87bca4248688ef6c35050371dca</guid></item></channel></rss>