You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2013/02/28 19:39:56 UTC
svn commit: r1451284 -
/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
Author: rickhall
Date: Thu Feb 28 18:39:55 2013
New Revision: 1451284
URL: http://svn.apache.org/r1451284
Log:
Catch and ignore IAEs due to harmless check-then-act situation. (FELIX-3939)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java?rev=1451284&r1=1451283&r2=1451284&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java Thu Feb 28 18:39:55 2013
@@ -2185,7 +2185,12 @@ public class BundleWiringImpl implements
if (getPackage(pkgName) == null)
{
Object[] params = definePackage(pkgName);
- if (params != null)
+
+ // This is a harmless check-then-act situation,
+ // where threads might be racing to create different
+ // classes in the same package, so catch and ignore
+ // any IAEs that may occur.
+ try
{
definePackage(
pkgName,
@@ -2197,10 +2202,9 @@ public class BundleWiringImpl implements
(String) params[5],
null);
}
- else
+ catch (IllegalArgumentException ex)
{
- definePackage(pkgName, null, null,
- null, null, null, null, null);
+ // Ignore.
}
}
}
@@ -2315,7 +2319,7 @@ public class BundleWiringImpl implements
spectitle, specversion, specvendor, impltitle, implversion, implvendor
};
}
- return null;
+ return new Object[] {null, null, null, null, null, null};
}
private Class getDexFileClass(JarContent content, String name, ClassLoader loader)